目录
参考文档
CMake 官方文档
CMake 项目命令—安装时运行的规则
CMake 命令行工具—安装命令
CMake 入门实战
运行环境
2021年11月
MBP M1
macOS Big Sur 11.4
项目目录
.
├── include # 头文件合集
│ ├── CMakeLists.txt
│ └── date.h
│── library # 实现文件合集
│ ├── CMakeLists.txt
│ └── date.c
├── CMakeLists.txt
└── main.c
库主体
include
中新增CMakeLists.txt
文件,用来向系统目录中安装库的头文件。
./library/CMakeLists.txt
,仅须要添加构建结果的安装规则。
库配置文件
# ./include/CMakeLists.txt
file(GLOB headers "*.h")
install(
FILES ${headers}
DESTINATION include/date
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
#./library/CMakeLists.txt
cmake_minimum_required (VERSION 3.5)
project(
date
VERSION 0.1.0
LANGUAGES C
)
set(DATE_SOVERSION 1)
# 查找目录下的所有源文件,并将名称保存到 src_list 变量
aux_source_directory(. src_list)
#构建静态包 date.a
add_library(${PROJECT_NAME} STATIC ${src_list})
install(
TARGETS ${PROJECT_NAME}
DESTINATION lib
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
主项目内容
由于需要通过./include/CMakeLists.txt
配置库的头文件安装规则,所以在主项目需要新增对./include
目录的构建。
主项目配置文件
#./CMakeLists.txt
cmake_minimum_required (VERSION 3.5)
project (demo)
# 指定生成目标
add_executable(demo main.c)
# 引用date的头文件,这里的引用路径决定了代码中对头文件的引用路径
set(DATE_INCLUDE "./include")
include_directories(${DATE_INCLUDE})
add_subdirectory(${DATE_INCLUDE})
# 构建date库
set(DATE_LIBRARY "./library")
add_subdirectory(${DATE_LIBRARY})
# 链接date库
target_link_libraries(demo date)
构建安装
1、在根目录创建build文件夹
2、在根目录执行下面的两行命令
$ cmake -B build
$ cmake --build build --config Debug --target all -j 10 --
3、检查构建结果
- 库二进制文件:
build/date/library/libdate.a
- 主项目可执行文件:
build/demo
4、安装
$ sudo cmake --install ./build
5、检查安装结果,具体安装目录以install
中的配置为准
$ ls /usr/local/include/date
date.h
$ ls /usr/local/lib/libdate*
/usr/local/lib/libdate.a
网友评论