cmake 的使用

发布时间 2023-12-15 11:10:51作者: zxinlog

cmake

简介

cmake 是一个软件自动化构建工具,在使用C/C++ 编写程序的时候,多个源文件编译一般是通过makefile 工具进行编译生成。可以通过使用cmake 生成一个 makefile文件,再通过 makefile文件生成程序。

简而言之:cmake 用于生成 makefile文件,makefile 文件用于编译源文件生成程序。

在没有cmake 之前,makefile 也可以自己写。

但既然有了cmake,就没有必要再自己写makefile文件了(但对makefile文件仍然要有了解和认识)

CMakeLists.txt

CMakeLists.txt 文件是构建cmake 的核心,配置信息,加载源文件都在其中编写。

一般在文件中首先指定cmake的最低版本。

cmake_minimum_required(VERSION 2.8)

常见参数:

  • project(name) 定义项目名称
  • add_executable(target_name file1.cc file2.cc ) 指定要编译的源文件和生成的可执行文件
  • add_library(target_name STATIC/SHARED file1.cc file2.cc) 生成库文件(静态/动态)
  • find_package(package_name) 查找并使用一个外部库
  • include_directories(dir1 dir2) 指定头文件的搜索路径
  • target_link_libraries(target_name lib1 lib2) 指定链接时需要的库
  • set(variable value) 设置一个变量

示例

比如,我当前有多个源文件,分别为:a.cc, b.cc, c.cc,那么我的CMakeLists.txt 就可以这样写

cmake_minimum_required(VERSION 2.8)
project(out) # 这里的out表示这个工程的名字,默认和变量 PROJECT_NAME 一致。
# 在这里定义project之后,就可以使用 PROJECT_NAME 这个变量。
add_executable(a.out a.cc b.cc c.cc) # 这里的a.out表示即将生成的可执行程序

可以通过set设置一些变量,在文件中使用 ${} 使用变量的值。

set(target_name  "a.out") 
add_executable(${target_name} a.cc b.cc c.cc)