我有一段根据 #define 有条件激活的代码,如下所示:
#ifdef VARIABLE
code.function();
#endif
cmake 脚本有一个“选项”命令,可以像这样设置变量:
option(VARIABLE "Want to use VARIABLE?" ON)
if(VARIABLE)
message(STATUS "VARIABLE")
set(VARIABLE_FLAG "-DVARIABLE")
endif()
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${VARIABLE_FLAG} -Wall")
我使用 cmake 来构建项目,并使用 qtcreator 作为 IDE。我的问题是 qtcreator 认为 VARIABLE 没有定义,所以我的代码没有突出显示,但是当我在控制台上构建它时,VARIABLE 被定义了。那么,我应该将哪些参数传递给 qtcreator 来运行 cmake,以便它知道 VARIABLE 已定义并突出显示我的代码?有没有办法做到这一点?
Ps:我只是使用 qtcreator 来编辑文件,构建部分是通过控制台命令完成的。
另一种选择是使用配置的头文件,并仅在需要定义的地方包含它:
# in CMakeLists.txt
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/my_defs.h.in
${CMAKE_CURRENT_BINARY_DIR}/my_defs.h
)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
and
// in my_defs.h.in
#cmakedefine VARIABLE
// configure_file converts #cmakedefine of a named CMake variable
// into a C++ #define of a C++ pre-processor symbol
最后
// in various C++ source or header files, but only as needed:
#include "my_defs.h"
#ifdef VARIABLE
doSome_VARIABLE_SpecificStuff();
#endif
我不经常使用 QtCreator,所以我不知道这种技术在语法突出显示方面是否有效,但我认为会,因为他们必须读取头文件才能正确完成它......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)