使用Cmake 编译库
本篇使用CMake编译一个动态库和静态库,并安装到系统中,对应的工程是cmake-utilsbox-lib
编译静态库
指定编译静态库,关键词为static,不添加关键字默认静态库
add_library(utils ${LIB_SOURCE})
在使用该库的工程中链接都刚才编译的库:
target_link_libraries(${PROJECT_NAME} utils)
编译动态库
指定编译动态库,关键词为shared
add_library(utils SHARED ${LIB_SOURCE})
在使用该库的工程中链接都刚才编译的库:
target_link_libraries(${PROJECT_NAME} utils)
网上很多文章说 cmake在构建一个新的库时,会尝试清理掉其他使用这个名字的库,但我测试并不会清除,我的cmake version 3.5.1
但这需要编译两次有点麻烦,所以可以在cmake中指定同时输出静态库和动态库
先来看下目录树
.
├── CMakeLists.txt
├── doc
│ └── Introduction.txt
├── README.md
├── src
│ ├── CMakeLists.txt
│ ├── utilsbox.cpp
│ └── utilsbox.h
└── test
├── CMakeLists.txt
└── main.cpp
先来看下项目根CMakeLists