在CMake中进行宏定义有几种方式,具体取决于你想要定义的宏的作用范围。以下是一些常见的方式:
-
使用
add_definitions
命令:add_definitions
命令可以全局添加编译器选项,包括宏定义。这样定义的宏将在整个项目中的所有源文件中可见。add_definitions(-DMY_MACRO)
这将在编译时等同于在源代码中添加
#define MY_MACRO
。
注意 宏定义 只存在于源代码中,头文件是不包含的
-
在目标级别使用
target_compile_definitions
: 如果你只想为特定的目标(比如可执行文件或库)定义宏,可以使用target_compile_definitions
。add_executable(my_executable main.cpp) target_compile_definitions(my_executable PRIVATE MY_MACRO)
这将只在
my_executable
这个目标的编译过程中定义MY_MACRO
。 -
在源文件中使用
add_compile_definitions
: 如果你只想在特定的源文件中定义宏,可以使用add_compile_definitions
。add_executable(my_executable main.cpp) target_sources(my_executable PRIVATE my_source.cpp) target_compile_definitions(my_executable PRIVATE MY_MACRO)
这将只在
my_source.cpp
这个文件的编译过程中定义MY_MACRO
。 -
通过
configure_file
生成配置文件: 如果你想为源代码提供一些配置参数,可以使用configure_file
生成一个配置文件,然后在代码中使用预定义的宏。configure_file(config.h.in config.h)
在
config.h.in
中,你可以定义宏,然后在源代码中包含生成的config.h
文件。
这些是一些常见的CMake中进行宏定义的方式。选择哪种方式取决于你的需求以及宏定义的作用范围。