cmake预定义宏 option add_definitions
转自:https://subingwen.cn/cmake/CMake-primer/index.html
1.预定义宏
PROJECT_SOURCE_DIR
2. option和add_definitions的区别
来自chatgpt 3.5。
option
:
option
用于定义 CMake 的构建选项,允许用户在构建项目时选择某些特定的配置。这通常用于开启或关闭一些功能、选项或特性。option
可以在 CMakeLists.txt 文件中提供一个选项,允许用户通过 CMake 命令行或 GUI 工具选择是否启用某个选项。- 语法:
option(<option_name> "Help string" ON/OFF)
case:
option(ENABLE_FEATURE "Enable some feature" ON) if(ENABLE_FEATURE) add_definitions(-DENABLE_FEATURE) endif()
add_definitions
:
add_definitions
用于向编译器添加预定义的宏,这些宏会影响源代码的编译过程。- 通常用于定义预处理器宏,比如在代码中使用
#ifdef
来根据宏的定义与否进行条件编译。 - 语法:
add_definitions(-DMY_MACRO)
add_definitions(-DENABLE_FEATURE)
区别总结:
option
用于定义 CMake 的构建选项,允许用户在构建时选择某些配置。它与用户的输入交互,常用于开关某些功能。add_definitions
用于向编译器添加预定义的宏,通常用于在源代码中进行条件编译。它直接影响编译过程,而不涉及用户选择。
在某些情况下,你可能会看到这两者一同使用,例如,使用 option
定义一个开关,然后在 CMakeLists.txt
中使用 add_definitions
根据这个开关的状态来定义宏。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步