使用 CMake 设置 C++ 定义 | KDAB

主要观点:在使用 CMake 构建 C++代码时,常需在 CMake 代码中设置预处理定义,如设置项目版本号和布尔选项等,介绍了常见但次优的解决方案(使用add_definitions等)及其存在的问题,推荐使用configure_file生成包含#define的头文件并在需要的 C++文件中包含,以避免不必要的文件重新编译。
关键信息

  • 常用add_definitions等方式设置定义,但其在 CMake 3.12 后已被弃用,应使用add_compile_definitions且需去掉 leading -D
  • 常规方式会导致项目版本或布尔选项更改时强制重新编译所有后续定义的.cpp文件,即使只在少数文件中使用。
  • 推荐方式是使用configure_file生成头文件,如myapp_config.h,其中包含#define,只在需要的.cpp文件中包含该头文件,可避免不必要的重新编译。
  • 对于#ifdef使用#cmakedefine01,若忘记包含头文件不会报错,可通过添加编译器标志-Werror=undef将其升级为错误。
    重要细节
  • 示例代码展示了如何设置项目版本号和布尔选项的定义及使用方式。
  • 提到构建目录中可能因未将其添加到包含路径而出现“file not found”错误,可通过set(CMAKE_INCLUDE_CURRENT_DIR TRUE)解决。
  • 介绍了 KDAB 公司的业务范围和专业领域,以及相关人员的信息。
  • 提供了关于 CMake 的资源集合、KDAB 新闻通讯注册、现代 C++培训课程和寻求性能问题帮助的相关链接。
阅读 17
0 条评论