一.简介
CMake是开源、跨平台的构建工具,可以让我们通过编写简单的配置文件去生成本地的Makefile,这个配置文件是独立于运行平台和编译器的,这样就不用亲自去编写Makefile了,而且配置文件可以直接拿到其它平台上使用,无需修改,非常方便。
二.Cmake安装命令
sudo apt install cmake
cmake -version
三.Cmake编译
一般把CMakeLists.txt文件放在工程目录下,使用时,先创建一个叫build的文件夹(这个并非必须,因为cmake命令指向CMakeLists.txt所在的目录,例如cmake . ., 表示CMakeLists.txt在当前目录的上一级目录。cmake后会生成很多编译的中间文件以及makefile文件,所以一般建议新建一个新的目录,专门用来编译),然后执行下列操作:
cd build
cmake . .
make
其中cmake . . 在build里生成Makefile,make根据生成makefile文件,编译程序,make应当在有Makefile的目录下,根据Makefile生成可执行程序或共享库。
四.动态库和静态库的编译控制
src目录下的CMakeLists.txt:
# 寻找该目录下所有的源代码文件并将列表存储在SRC_LIST中
aux_source_directory(. SRC_LIST)
# 指定库文件输出的存放路径
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
# 生成静态库文件
add_library(swap_lib STATIC ${SRC_LIST})
项目主目录的CMakeLists.txt:
# 指定CMake的最小版本要求
cmake_minimum_required(VERSION 3.0)
# 定义工程名称
project(SWAP)
# 设置编译参数
add_compile_options(-Wall -std=c++11)
# 添加头文件搜索路径
include_directories(include)
# 添加src子目录
add_subdirectory(src)
# 指定可执行文件输出的存放路径
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
# 生成可执行文件
add_executable(swap_cmake main.cpp)
# 为可执行文件添加需要链接的库文件
target_link_libraries(swap_cmake swap_lib)