
CMake教程12-打包调试与发布
调试版本通常对于查找应用程序coredump等异常是非常有必要的,可以使用调试工具跟踪查看具体的错误位置,从而快速修复问题。
默认情况下,CMake是单配置模型,我们可以通过CPack
实现多配置,生成调试版本与Release版本。
首先我们设置调试版本的后缀为d
,例如first_appd
,具体设置在CMakeLists.txt
文件:
set(CMAKE_DEBUG_POSTFIX d)
add_executable(first_app hello.cpp)
set_target_properties(first_app PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
在func/CMakeLists.txt
中添加库版本信息:
set_property(TARGET myfunc PROPERTY VERSION "1.0.0")
set_property(TARGET myfunc PROPERTY SOVERSION "1")
现在,我们开始构建debug
调试版本与release
版本,执行命令:
mkdir debug release
cd debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
cd ../release
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .
最后,还可以通过配置将调试版与正式版一起打包,具体配置如下:
新建MultiCPackConfig.cmake
文件,内容如下:
include("release/CPackConfig.cmake")
set(CPACK_INSTALL_CMAKE_PROJECTS
"debug;first_app;ALL;/"
"release;first_app;ALL;/"
)
然后,执行打包命令:
cpack --config MultiCPackConfig.cmake
打包后的目录结构如下:
FirstProject--Linux
├── bin
│ ├── first_app
│ └── first_appd
├── include
│ ├── config.h
│ └── myfunc.h
└── lib
├── cmake
│ └── MyFunc
│ ├── MyFuncConfig.cmake
│ ├── MyFuncConfigVersion.cmake
│ ├── MyFuncTargets.cmake
│ ├── MyFuncTargets-debug.cmake
│ └── MyFuncTargets-release.cmake
├── libmyfuncd.so -> libmyfuncd.so.1
├── libmyfuncd.so.1 -> libmyfuncd.so.1.0.0
├── libmyfuncd.so.1.0.0
├── libmyfunc.so -> libmyfunc.so.1
├── libmyfunc.so.1 -> libmyfunc.so.1.0.0
└── libmyfunc.so.1.0.0
转载本文时请注明出处及本文链接地址CMake教程12-打包调试与发布。