[CMake翻译]包装调试和发布(步骤12)

386 阅读2分钟

原文地址:cmake.org/cmake/help/…

原文作者:

发布时间:

注意:这个例子对单配置生成器有效,对多配置生成器(如Visual Studio)无效。

默认情况下,CMake的模型是一个构建目录只包含一个配置,无论是Debug、Release、MinSizeRel,还是RelWithDebInfo。然而,我们可以设置CPack来捆绑多个构建目录,并构建一个包含同一项目多个配置的包。

首先,我们要确保调试版和发布版构建的可执行文件和库使用不同的名称。让我们使用d作为调试可执行文件和库的后缀。

在顶层CMakeLists.txt文件的开头附近设置CMAKE_DEBUG_POSTFIX

set(CMAKE_DEBUG_POSTFIX d)

add_library(tutorial_compiler_flags INTERFACE)

以及教程可执行文件的DEBUG_POSTFIX属性。

add_executable(Tutorial tutorial.cxx)
set_target_properties(Tutorial PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})

target_link_libraries(Tutorial PUBLIC MathFunctions)

我们也给MathFunctions库添加版本号。在MathFunctions/CMakeLists.txt中,设置VERSIONSOVERSION属性。

set_property(TARGET MathFunctions PROPERTY VERSION "1.0.0")
set_property(TARGET MathFunctions PROPERTY SOVERSION "1")

Step12目录中,创建debugrelease子目录。布局会像这样。

- Step12
   - debug
   - release

现在我们需要设置调试和发布构建。我们可以使用CMAKE_BUILD_TYPE来设置配置类型。

cd debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
cmake --build .
cd ../release
cmake -DCMAKE_BUILD_TYPE=Release ..
cmake --build .

现在调试和发行版的构建都已经完成了,我们可以使用一个自定义的配置文件将两个构建打包成一个发行版。在Step12目录下,创建一个名为MultiCPackConfig.cmake的文件。在这个文件中,首先包含cmake可执行文件创建的默认配置文件。

接下来,使用CPACK_INSTALL_CMAKE_PROJECTS变量来指定要安装的项目。在本例中,我们希望同时安装调试和发布。

include("release/CPackConfig.cmake")

set(CPACK_INSTALL_CMAKE_PROJECTS
    "debug;Tutorial;ALL;/"
    "release;Tutorial;ALL;/"
    )

Step12目录下,运行cpack,用config选项指定我们的自定义配置文件。

cpack --config MultiCPackConfig.cmake

www.deepl.com 翻译