自动化构建工具
自动化构建工具能够提供构建和链接的基础设施。最终会安装和使用什么,很大程度上取决于你的操作系统和你的“品味”。
常见的自动化构建工具有:
- Unix Makefile
- Ninja
- Visual Studio
CMake
- CMake 是一个构建指令生成器,用于描述构建系统应当如何操作才能编译代码。
- CMake 负责为构建系统生成相应的指令。
- CMake 清单文件命名必须是
CMakeLists.txt
,区分大小写。 - CMake 指令不区分大小写。
前置声明
设置 CMake 所需的最低版本。如果使用低于改版本的 CMake,则会引发致命错误。
1
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
声明项目名称和所用的编程语言。
1
project(myproj01 LANGUAGES C)
添加构建目标
添加一个可执行目标。
1
add_executable(hello-world hello-world.c)
添加一个静态库目标。
1
add_library(hello-static STATIC hello.h hello.c)
添加一个动态库目标。
1
add_library(hello-shared SHARED hello.h hello.c)
链接库
为目标添加依赖的链接库。
1
target_link_libraries(hello-world hello-shared)
设置目标属性
重命名一个目标。库文件会自动添加前缀和后缀。
1
set_target_properties(libhello-static PROPERTIES OUTPUT_NAME hello)
设置库文件版本号。
1
set_target_properties(libhello-shared PROPERTIES VERSION 1.2 SOVERSION 1)
安装设置
安装目标文件。
1
2
3
4
5
6
install(
TARGETS hello-world hello-shared hello-static
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
安装普通文件。
1
2
3
4
install(
FILES hello.h
DESTINATION include/hello
)