步驟 12:封裝除錯與發行¶
注意: 此範例適用於單一組態產生器,不適用於多組態產生器(例如 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)
以及 tutorial 可執行檔的 DEBUG_POSTFIX
屬性
add_executable(Tutorial tutorial.cxx)
set_target_properties(Tutorial PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX})
target_link_libraries(Tutorial PUBLIC MathFunctions tutorial_compiler_flags)
我們也為 MathFunctions
函式庫新增版本編號。在 MathFunctions/CMakeLists.txt
中,設定 VERSION
和 SOVERSION
屬性
set_property(TARGET MathFunctions PROPERTY VERSION "1.0.0")
set_property(TARGET MathFunctions PROPERTY SOVERSION "1")
從 Step12
目錄中,建立 debug
和 release
子目錄。配置將如下所示
- 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