CMake 最佳实践
练习 1
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo1)
# 指定生成目标
add_executable(Demo main.cc)
如果有多个源文件存在,则修改CMakeLists.txt,在制定目标那一行的文件后面进行添加操作
如果源文件众多,还可以使用aux_source_directory命令,它可以查找指定目录下的所有源文件,将结果存进指定变量名,语法格式如下:
aux_source_directory(<dir><variable>)
例如
# CMake 最低版本号要求
cmake_minimum_required (VERSION 2.8)
# 项目信息
project (Demo1)
# 查找当前目录下的所有源文件
# 并将名称保存到 DIR_SRCS 变量
aux_source_directory(. DIR_SRCS)
# 指定生成目标
add_executable(Demo ${DIR_SRCS})
这样,CMake 会将当前目录所有源文件的文件名赋值给变量DIR_SRCS,再指示变量DIR_SRCS中的源文件需要编译成一个名称为 Demo 的可执行文件。
源码编译依赖库
示例,假设构建生成的可执行文件为zipapp,该文件依赖第三方库archive,链接archive库时从源 码编译生成lib:
add_library(archive archive.cpp zip.cpp lzma.cpp)
add_executable(zipapp zipapp.cpp)
target_link_libraries(zipapp archive)
参考自官方文档:
https://cmake.org/cmake/help/v3.5/manual/cmake-buildsystem.7.html#binary-targets
使用预先编译好的依赖库
示例,假设我们已经生成好的库叫mylib.so,位置在../lib目录下,构建生成的可执行程序叫myapp,它引用了mylib.so
link_directories(../lib)
add_executable(myapp myapp.cpp)
target_link_libraries(myapp mylib)
参考自:http://stackoverflow.com/questions/8774593/cmake-link-to-external-library