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 根据这个开关的状态来定义宏。

 

posted @ 2024-02-06 15:09  lypbendlf  阅读(24)  评论(0编辑  收藏  举报