CMake 入门

编写 CMakeLists.txt

首先编写 CMakeLists.txt 文件,并保存在与 main.cc 源文件同个目录下:

# 单个源文件
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo1)
# 指定生成目标
add_executable(Demo main.cc)

CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的。符号 # 后面的内容被认为是注释。命令由命令名称、小括号和参数组成,参数之间使用空格进行间隔。

对于上面的 CMakeLists.txt 文件,依次出现了几个命令:

  1. cmake_minimum_required:指定运行此配置文件所需的 CMake 的最低版本;
  2. project:参数是 main,该命令表示项目的名称是 main 。
  3. add_executable: 将名为 main.cc 的源文件编译成一个名称为 Demo 的可执行文件
# 同一目录,多个源文件
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo2)
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 指定生成目标
add_executable(Demo ${DIR_SRCS})

aux_source_directory: 将当前目录所有源文件的文件名赋值给变量 DIR_SRCS

add_executable: 指示变量 DIR_SRCS 中的源文件需要编译成一个名称为 Demo 的可执行文件。

# 多个目录,多个源文件
# 根目录中的 CMakeLists.txt :
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo3)
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 添加 math 子目录
add_subdirectory(math)
# 指定生成目标 
add_executable(Demo main.cc)
# 添加链接库
target_link_libraries(Demo MathFunctions)

# 子目录中的 CMakeLists.txt
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_LIB_SRCS 变量
aux_source_directory(. DIR_LIB_SRCS)
# 生成链接库
add_library (MathFunctions ${DIR_LIB_SRCS})

add_subdirectory: 指明本项目包含一个子目录 math, math 目录下的 CMakeLists.txt 文件和源代码也会被处理

target_link_libraries: 指明可执行文件 main 需要连接一个名为 MathFunctions 的链接库

add_library: 将 src 目录中的源文件编译为静态链接库

原文地址:https://www.cnblogs.com/dverdon/p/4573330.html