[关闭]
@lniwn 2017-11-22T11:36:34.000000Z 字数 2269 阅读 1505

CMake学习笔记

C++ CMake


基本文件结构

编写CMakeLists.txt

  1. # CMake 最低版本号要求
  2. cmake_minimum_required (VERSION 2.8)
  3. # 项目信息
  4. project (Demo1)
  5. # 指定生成目标
  6. add_executable(Demo main.cc)

常用命令

项目类型命令

文件依赖命令

  1. # CMake 最低版本号要求
  2. cmake_minimum_required (VERSION 2.8)
  3. # 项目信息
  4. project (Demo2)
  5. # 查找当前目录下的所有源文件
  6. # 并将名称保存到 DIR_SRCS 变量
  7. aux_source_directory(. DIR_SRCS)
  8. # 指定生成目标
  9. add_executable(Demo ${DIR_SRCS})

这样,CMake 会将当前目录所有源文件的文件名赋值给变量DIR_SRCS,再指示变量DIR_SRCS 中的源文件需要编译成一个名称为 Demo 的可执行文件。

编译选项命令

链接命令

  1. target_link_libraries(${PROJECT_NAME}
  2. delayimp.lib libcef.lib
  3. debug cef_module_d.lib
  4. debug libcef_dll_wrapper_d.lib
  5. optimized cef_module.lib
  6. optimized libcef_dll_wrapper.lib)

项目实例

  1. # CMake 最低版本号要求
  2. cmake_minimum_required (VERSION 2.8)
  3. # 项目信息
  4. project (Demo4)
  5. # 加入一个配置头文件,用于处理 CMake 对源码的设置
  6. configure_file (
  7. "${PROJECT_SOURCE_DIR}/config.h.in"
  8. "${PROJECT_BINARY_DIR}/config.h"
  9. )
  10. # 是否使用自己的 MathFunctions 库
  11. option (USE_MYMATH
  12. "Use provided math implementation" ON)
  13. # 是否加入 MathFunctions 库
  14. if (USE_MYMATH)
  15. include_directories ("${PROJECT_SOURCE_DIR}/math")
  16. add_subdirectory (math)
  17. set (EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
  18. endif (USE_MYMATH)
  19. # 查找当前目录下的所有源文件
  20. # 并将名称保存到 DIR_SRCS 变量
  21. aux_source_directory(. DIR_SRCS)
  22. # 指定生成目标
  23. add_executable(Demo ${DIR_SRCS})
  24. target_link_libraries (Demo ${EXTRA_LIBS})

编写config.h.in文件
#cmakedefine USE_MYMATH

  1. set(CMAKE_BUILD_TYPE "Debug")
  2. set(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
  3. set(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
  1. # 检查系统是否支持 pow 函数
  2. include (${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
  3. check_function_exists (pow HAVE_POW)

参考链接

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注