前言:

  • cmake的内置命令是不区分大小写
    因此add_subdirectoryADD_SUBDIRECTORY作用一致。
  • cmake的所有变量都是区分大小写

1、PROJECT_SOURCE_DIR 与 PROJECT_BINARY_DIR
cmake系统预定义变量: 指定工程路径

  • PROJECT_SOURCE_DIR/CMAKE_SOURCE_DIR/_SOURCE_DIR 为包含PROJECT()命令的最近一个CMakeLists.txt文件所在的文件夹路径
  • PROJECT_BINARY_DIR/CMAKE_BINARY_DIR/_BINARY_DIR 运行cmake命令的目录,即工程编译发生的路径

参考资料:cmake中PROJECT_SOURCE_DIR的遐思

2、EXECUTABLE_OUTPUT_PATH 与 LIBRARY_OUTPUT_PATH
cmake系统预定义变量:
2.1、EXECUTABLE_OUTPUT_PATH: 指定最终的可执行文件的位置
例: 设置可执行文件输出路径

 SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)   

2.2、LIBRARY_OUTPUT_PATH: 设置库文件的输出目录
例: 设置库文件输出路径

SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib)    
以上两变量在新版本中已被`CMAKE_RUNTIME_OUTPUT_DIRECTORY`和`CMAKE_ARCHIVE_OUTPUT_DIRECTORY`代替  

参考资料: CMake 设置Target输出目录和后缀名

3、CMAKE_EXPORT_COMPILE_COMMANDS选项:
默认不开启,开启的两种方法:

  • 在CMakeLists.txt中添加 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
  • 在命令行中添加-DCMAKE_EXPORT_COMPILE_COMMANDS=on

开启后,其生成的文件compile_commands.json,包含所有编译单元所执行的指令,可以在此json中查看cpp文件是否生成.o(即该cpp是否编译了)

参考资料:CMAKE:CMAKE_EXPORT_COMPILE_COMMANDS

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐