<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 1.7 切換構建類型 **NOTE**:*此示例代碼可以在 https://github.com/dev-cafe/cmake-cookbook/tree/v1.0/chapter-01/recipe-07 中找到,包含一個C++/C示例。該示例在CMake 3.5版(或更高版本)中是有效的,并且已經在GNU/Linux、macOS和Windows上進行過測試。* CMake可以配置構建類型,例如:Debug、Release等。配置時,可以為Debug或Release構建設置相關的選項或屬性,例如:編譯器和鏈接器標志。控制生成構建系統使用的配置變量是`CMAKE_BUILD_TYPE`。該變量默認為空,CMake識別的值為: 1. **Debug**:用于在沒有優化的情況下,使用帶有調試符號構建庫或可執行文件。 2. **Release**:用于構建的優化的庫或可執行文件,不包含調試符號。 3. **RelWithDebInfo**:用于構建較少的優化庫或可執行文件,包含調試符號。 4. **MinSizeRel**:用于不增加目標代碼大小的優化方式,來構建庫或可執行文件。 ## 具體實施 示例中,我們將展示如何為項目設置構建類型: 1. 首先,定義最低CMake版本、項目名稱和支持的語言: ```cmake cmake_minimum_required(VERSION 3.5 FATAL_ERROR) project(recipe-07 LANGUAGES C CXX) ``` 2. 然后,設置一個默認的構建類型(本例中是Release),并打印一條消息。要注意的是,該變量被設置為緩存變量,可以通過緩存進行編輯: ```cmake if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE) endif() message(STATUS "Build type: ${CMAKE_BUILD_TYPE}") ``` 3. 最后,打印出CMake設置的相應編譯標志: ```cmake message(STATUS "C flags, Debug configuration: ${CMAKE_C_FLAGS_DEBUG}") message(STATUS "C flags, Release configuration: ${CMAKE_C_FLAGS_RELEASE}") message(STATUS "C flags, Release configuration with Debug info: ${CMAKE_C_FLAGS_RELWITHDEBINFO}") message(STATUS "C flags, minimal Release configuration: ${CMAKE_C_FLAGS_MINSIZEREL}") message(STATUS "C++ flags, Debug configuration: ${CMAKE_CXX_FLAGS_DEBUG}") message(STATUS "C++ flags, Release configuration: ${CMAKE_CXX_FLAGS_RELEASE}") message(STATUS "C++ flags, Release configuration with Debug info: ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") message(STATUS "C++ flags, minimal Release configuration: ${CMAKE_CXX_FLAGS_MINSIZEREL}") ``` 4. 驗證配置的輸出: ```shell $ mkdir -p build $ cd build $ cmake .. ... -- Build type: Release -- C flags, Debug configuration: -g -- C flags, Release configuration: -O3 -DNDEBUG -- C flags, Release configuration with Debug info: -O2 -g -DNDEBUG -- C flags, minimal Release configuration: -Os -DNDEBUG -- C++ flags, Debug configuration: -g -- C++ flags, Release configuration: -O3 -DNDEBUG -- C++ flags, Release configuration with Debug info: -O2 -g -DNDEBUG -- C++ flags, minimal Release configuration: -Os -DNDEBUG ``` 5. 切換構建類型: ```shell $ cmake -D CMAKE_BUILD_TYPE=Debug .. -- Build type: Debug -- C flags, Debug configuration: -g -- C flags, Release configuration: -O3 -DNDEBUG -- C flags, Release configuration with Debug info: -O2 -g -DNDEBUG -- C flags, minimal Release configuration: -Os -DNDEBUG -- C++ flags, Debug configuration: -g -- C++ flags, Release configuration: -O3 -DNDEBUG -- C++ flags, Release configuration with Debug info: -O2 -g -DNDEBUG -- C++ flags, minimal Release configuration: -Os -DNDEBUG ``` ## 工作原理 我們演示了如何設置默認構建類型,以及如何(從命令行)覆蓋它。這樣,就可以控制項目,是使用優化,還是關閉優化啟用調試。我們還看到了不同配置使用了哪些標志,這主要取決于選擇的編譯器。需要在運行CMake時顯式地打印標志,也可以仔細閱讀運行`CMake --system-information`的輸出,以了解當前平臺、默認編譯器和語言的默認組合是什么。下一個示例中,我們將討論如何為不同的編譯器和不同的構建類型,擴展或調整編譯器標志。 ## 更多信息 我們展示了變量`CMAKE_BUILD_TYPE`,如何切換生成構建系統的配置(這個鏈接中有說明: https://cmake.org/cmake/help/v3.5/variable/CMAKE_BUILD_TYPE.html )。Release和Debug配置中構建項目通常很有用,例如:評估編譯器優化級別的效果。對于單配置生成器,如Unix Makefile、MSYS Makefile或Ninja,因為要對項目重新配置,這里需要運行CMake兩次。不過,CMake也支持復合配置生成器。這些通常是集成開發環境提供的項目文件,最顯著的是Visual Studio和Xcode,它們可以同時處理多個配置。可以使用`CMAKE_CONFIGURATION_TYPES`變量可以對這些生成器的可用配置類型進行調整,該變量將接受一個值列表(可從這個鏈接獲得文檔:https://cmake.org/cmake/help/v3.5/variable/CMAKE_CONFIGURATION_TYPES.html)。 下面是對Visual Studio的CMake調用: ```shell $ mkdir -p build $ cd build $ cmake .. -G"Visual Studio 12 2017 Win64" -D CMAKE_CONFIGURATION_TYPES="Release;Debug" ``` 將為Release和Debug配置生成一個構建樹。然后,您可以使`--config`標志來決定構建這兩個中的哪一個: ```shell $ cmake --build . --config Release ``` **NOTE**:*當使用單配置生成器開發代碼時,為Release版和Debug創建單獨的構建目錄,兩者使用相同的源代碼。這樣,就可以在兩者之間切換,而不用重新配置和編譯。*
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看