添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
CMake 是可在多個平台上執行之定義建置程序的跨平台開放原始碼工具。 本文假設您已熟悉 CMake。 如需 CMake 的詳細資訊,請參閱 CMake 文件 。 CMake 教學課程 是深入了解的良好起點。

在過去幾個版本中,CMake 已越來越與 Visual Studio 整合。 若要查看您慣用 Visual Studio 版本的檔案,請使用位於此頁面目錄頂端 的版本選取器 。

Visual Studio 對 CMake 的原生支援可讓您在 Windows 上編輯、建置和偵錯 CMake 專案、適用於 Linux 的 Windows 子系統 (WSL),以及來自相同 Visual Studio 實例的遠端系統。 CMake 專案檔 (例如 CMakeLists.txt ) 會直接由 Visual Studio 取用,以供 IntelliSense 和瀏覽之用。 Visual Studio 會直接調用 cmake.exe 來進行 CMake 設定和建置。

Installation

適用於 Windows 的 C++ CMake 工具 會安裝為 使用 C++ 進行桌面開發 ,以及 使用 C++ 進行 Linux 開發 工作負載的一部分。 跨平台 CMake 開發需要 適用於 Windows 的 C++ CMake 工具 和 使用 C++ 進行 Linux 開發 。

在安裝程式中,已選取 [使用 C++ 進行桌面開發] 下拉式選單,以及 [適用於 Windows 的 C++ CMake 工具]。

如需詳細資訊,請參閱 在 Visual Studio 中安裝 C++ Linux 工作負載 。

IDE 整合

當您 時,會發生下列情況。

方案總管 會顯示資料夾結構和檔案。

  • Visual Studio 會執行 CMake,並針對預設組態產生 CMake 快取檔案 ( CMakeCache.txt )。 CMake 命令列會連同 CMake 的其他輸出一起顯示在 輸出視窗 中。

  • Visual Studio 會在背景處開始建立原始程式檔的索引,以啟用 IntelliSense、瀏覽資訊、重構等功能。 Visual Studio 會在您工作時,監視編輯器和磁碟上的變更,以確保其索引與來源同步。

    從 Visual Studio 2022 17.1 版 Preview 2 開始,如果您的最上層 CMakeLists.txt 存在於子資料夾中,而不是在工作區的根目錄中,系統會提示您是否要啟用 CMake 整合。 如需詳細資訊,請參閱 CMake 部分功能啟用 。

    一旦 CMake 快取生成成功,您還可以依據目標以邏輯方式查看專案的組織。 選擇 [方案總管] 工具列上的 [選取檢視] 按鈕。 從 [方案總管 - 檢視] 清單中,選取 [CMake 目標檢視] ,然後按 Enter 以開啟目標檢視:

    選擇 [方案總管] 頂端的 [顯示所有檔案] 按鈕,以查看 out/build/<config> 資料夾中所有 CMake 產生的輸出。

    使用每個專案資料夾中的 CMakeLists.txt 檔案,就像在任何 CMake 專案中一樣。 您可以指定來源檔案、尋找程式庫、設定編譯器和連結器選項,以及指定其他建置系統相關資訊。 如需 Visual Studio 所提供 CMake 語言服務的詳細資訊,請參閱 編輯 CMakeLists.txt 檔案 。

    Visual Studio 會使用 CMake 組態檔來驅動 CMake 快取產生和建置。 如需詳細資訊,請參閱 設定 CMake 專案 和 建置 CMake 專案 。

    如果您需要在偵錯時將引數傳遞給可執行檔,您可以使用稱為 launch.vs.json 的另一個檔案。 如需在 Visual Studio 中偵錯跨平台 CMake 專案的詳細資訊,請參閱 偵錯 CMake 專案 。

    Visual Studio 中的 CMake 專案支援大部分的 Visual Studio 和 C++ 語言功能。 範例包括:

    CMake 專案的編輯即時運行
  • CMake 專案的 Incredibuild 整合 CMake 專案的 AddressSanitizer 支援 Clang/LLVM 支援

    對於其他類型的「開啟資料夾」專案,會使用額外的 JSON 檔案 CppProperties.json 。 此檔案與 CMake 項目無關。

    設定 CMake 專案

    CMake 設定步驟會產生專案建置系統。 這相當於從命令列叫用 cmake.exe 。 如需 CMake 設定步驟的詳細資訊,請參閱 CMake 文件 。

    Visual Studio 會使用 CMake 組態檔來驅動 CMake 產生和建置。 CMakePresets.json 受 Visual Studio 2019 16.10 版或更新版本支援,而且是建議的 CMake 組態檔。 CMakePresets.json 由 CMake 直接支援,可用來從 Visual Studio、VS Code、在持續整合管線中,以及從 Windows、Linux 和 Mac 上的命令行來驅動 CMake 產生和建置。 如需 CMakePresets.json 的詳細資訊,請參閱 使用 CMake 預設設定和建置 。 CMakeSettings.json 適用於使用舊版 Visual Studio 的客戶。 如需 CMakeSettings.json 的詳細資訊,請參閱 自訂 CMake 組建設定 。

    當您對 CMake 組態檔或 CMakeLists.txt 檔案進行重大變更時,Visual Studio 會自動執行 CMake 設定步驟。 您可以手動叫用設定步驟:從工具列選取 [項目 > 設定快取] 。 您也可以在 [工具] >[選項] >[CMake] >[一般] 中變更組態喜好設定。

    已列出 CMake 配置。已選擇顯示 CMake 快取通知。 在 [快取過期時]底下,選取 [永不自動執行設定步驟] 選項。

    如果設定步驟完成且沒有錯誤,則可用的資訊會驅動 C++ IntelliSense 和語言服務。 它也用於建置和偵錯作業。

    您也可以在 Visual Studio 中開啟現有的 CMake 快取。 如需詳細資訊,請參閱 開啟現有的快取 。

    自訂設定意見反應和通知

    根據預設,除非發生錯誤,否則會隱藏大部分的組態訊息。 若要查看所有訊息,請選取 [工具] >[選項] >[CMake] >[啟用詳細的 CMake 診斷輸出] 。

    您也可以取消選取 [顯示 CMake 快取通知] 來停用所有 CMake 快取通知(顯示為金色提示列)。

    自定義目標檢視來源群組

    根據預設,CMake 目標檢視會忽略下列來源群組: 來源檔案 、 頭檔 、 資源 、 對象檔 。 根據預設,這些群組會包含在大部分 CMake 專案中,而且會不必要地增加瀏覽目標檢視所需的點選次數。

    您可以選取 [工具 > 選項 > CMake >。

    針對 CMake 快取錯誤進行疑難排解

    如果您需要 CMake 快取狀態的詳細資訊以診斷問題,請開啟 [專案] 主功能表,或在 [方案總管] CMakeLists.txt 中開啟 捷徑功能表,執行下列其中一個命令:

    檢視 CMakeCache.txt 會從編輯器的組建目錄中開啟 CMakeCache.txt 檔案。 如果您清除快取,您在此對 CMakeCache.txt 所做的任何編輯都會遭到抹除。 若要在清除快取之後進行保存的變更,請參閱 自訂 CMake 設定 或 使用 CMake 預設進行設定和建置 。

    刪除快取並重新設定 會刪除組建目錄,並從清除的快取重新設定。

  • [設定快取] ,即使 Visual Studio 認為環境是最新的,也會強制執行產生步驟。

    建置 CMake 專案

    CMake 編譯步驟將編譯已生成的專案二進位目錄樹。 這相當於從命令列叫用 cmake --build 。 如需 CMake 建置步驟的詳細資訊,請參閱 CMake 文件 。

    若要建置 CMake 專案,您有下列選項:

  • 在工具列中,尋找 啟動項目 下拉式清單。 選取慣用的目標,然後按 F5 ,或選擇工具列上的 [執行] 按鈕。 專案會先自動建置,如同 Visual Studio 方案一樣。

  • 在 [方案總管] 中啟用 [CMake 目標檢視] ,以滑鼠右鍵按一下 CMake 目標,然後從捷徑功能表中選取 [建置] 。

  • 從主功能表中,選取 [建置 > 全部建置] 。 確定已在工具列的 [啟動項目] 下拉式清單中選取 CMake 目標。

    如您所預期,建置結果會顯示在 [輸出] 視窗和 [錯誤清單] 中。

    編輯組建設定

    Visual Studio 會使用 CMake 組態檔來驅動 CMake 組建。 CMake 組態檔會封裝組建選項,例如原生建置工具參數和環境變數。 如果 CMakePresets.json 是您的使用中組態檔,請參閱 使用 CMake 預設進行設定和建置 。 如果 CMakeSettings.json 是您的使用中組態檔,請參閱 自訂 CMake 組建設定 。 CMakePresets.json 適用於 Visual Studio 2019 16.10 版或更新版本,而且是建議的 CMake 組態檔。

    偵錯 CMake 專案

    工具列的 [啟動項目] 下拉式清單中會顯示所有可執行的 CMake 目標。 若要開始偵錯,請選取其中一個,然後按工具列中的 [偵錯 > 開始偵錯] 按鈕。 在 CMake 專案中, [目前檔 ] 選項只適用於.cpp檔案。

    下拉式清單具有下列選項:顯示/隱藏偵錯目標、目前文件、範例 (醒目提示)、box2d_tests 和 samples-noGUI。

    如果自上次建置以來已有所變更,則 [偵錯] 或 F5 命令會先建置專案。 CMake 組態檔 ( CMakePresets.json 或 CMakeSettings.json ) 或 CMakeLists.txt 的變更會導致重新產生 CMake 快取。

    您可以在 launch.vs.json 檔案中設定屬性,自訂 CMake 偵錯工作階段。 若要自訂特定目標的偵錯設定,請在 [ 啟動專案 ] 下拉式清單中選取目標,然後選擇 [偵錯與啟動設定] 以設定作用中目標。 如需 CMake 偵錯工作階段的詳細資訊,請參閱 設定 CMake 偵錯工作階段 。

    適用於 CMake 專案的 Just My Code

    當您使用 Microsoft C++ (MSVC) 編譯器建構 Windows 時,CMake 專案支援 Just My Code 偵錯功能。 若要變更 Just My Code 設定,請移至 [工具] >[選項] >[偵錯] >[一般] 。 如需有關 Just My Code 偵錯的詳細資訊,請參閱 僅使用 Just My Code 偵錯使用者程式碼 。

    CMake 專案的編輯並繼續

    當您使用 MSVC 編譯器針對 Windows 建置時,CMake 專案支援 [編輯後繼續]。 將下列程式碼新增至您的 CMakeLists.txt 檔案,以啟用 [編輯後繼續]。

    if(MSVC)
      target_compile_options(<target> PUBLIC "/ZI")
      target_link_options(<target> PUBLIC "/INCREMENTAL")
    endif()
    

    如需有關 [編輯後繼續] 的詳細資訊,請參閱設定 [編輯後繼續] (C#、VB、C++)。

    附加至在 Linux 上執行的 CMake 專案

    Visual Studio 可讓您對遠端 Linux 系統或 WSL 上執行的處理程序進行偵錯,並使用 GDB 偵錯工具進行偵錯。 若要開始使用,請選取 [偵錯]>[附加至處理程序...],將 [連線類型] 設定 為 [SSH],然後從 [連線管理員] 的連線清單中選取您的 [連線目標]。 從可用的處理程序清單中選取處理程序,然後按 [附加]。 GDB 必須安裝在 Linux 電腦上。 如需 SSH 連線的詳細資訊,請參閱連線管理員

    CMake 部分啟用

    在 Visual Studio 2022 17.1 版和更新版本中,如果您的根資料夾未包含 CMakeLists.txt 檔案,CMake 功能不會自動啟用。 相反地,對話框會提示您是否要為專案啟用 CMake 功能。 如果您拒絕,CMake 快取生成不會啟動,而且 CMake 組態(從 CMakeSettings.json或CMakePresets.json)不會出現在組態下拉式選單中。 如果您接受,系統會將您帶到工作區層級組態檔 CMakeWorkspaceSettings.json (儲存在 .vs 目錄中),以指定您想要啟用 CMake 的資料夾。 (這些資料夾包含您的根目錄 CMakeLists.txt 檔案)。

    接受的屬性如下:

    Property Description

    您可以隨時透過 [專案]CMakeWorkspaceSettings.json[CMake 工作區設定]> 功能表命令連絡 ,即使目前已停用 CMake 功能也一樣。

    開啟現有的快取

    當您開啟現有的 CMake 快取檔案 (CMakeCache.txt),Visual Studio 不會嘗試為您管理快取和組建樹狀結構。 您的自訂或慣用工具可完全控制 CMake 設定您專案的方式。

    您可以將現有的 CMake 快取新增至開啟的專案。 其完成方式與新增組態的方式相同。 如需詳細資訊,請參閱我們在Visual Studio 中開啟現有快取的部落格文章。

    預設現有的快取體驗依賴於 cmake-server,其已從 3.20 版的 CMake 中移除。 若要在 Visual Studio 2019 16.10 版和更新版本中繼續使用現有的快取功能,請執行下列步驟之一:

  • 手動安裝 CMake 3.19 版或更低版本。 然後,將現有快取組態中的 cmakeExecutable 屬性設定為使用該版本的 CMake。
  • 在現有的快取組態中,設定 cacheGenerationCommand 屬性,讓 Visual Studio 要求必要的 CMake 檔案型 API 檔案。 如需該屬性的詳細資訊,請參閱 CMakeSettings.json 參考。
  • 在 Visual Studio 中產生並開啟快取之前,使用查詢檔案來要求 CMake 檔案型 API 檔案。 如需查詢檔案指示,請參閱下一節進階 CMake 快取疑難排解。
  • 進階 CMake 快取疑難排解

    Visual Studio 會使用 CMake 檔案型 API (在 3.14 版和更新版本中),將專案結構特有的資訊填入編輯器。 如需詳細資訊,請參閱多根工作區和檔案型 API 上的C++ 小組部落格文章。

    在產生 CMake 快取之前,您的自訂或慣用工具可能需要在組建輸出資料夾 (包含 .cmake/api/v1/query/client-MicrosoftVS/query.json 的資料夾) 中建立名為 CMakeCache.txt 的查詢檔案。 查詢檔案應包含此內容:

    {"requests":[{"kind":"cache","version":2},{"kind":"cmakeFiles","version":1},{"kind":"codemodel","version":2}]}
    

    當您的自訂或慣用工具產生快取時,CMake 會將檔案放在 .cmake/api/v1/response 底下,Visual Studio 會使用這些檔案以特定於您專案結構的資訊填入至編輯器。

    編輯 CMakeLists.txt 檔案

    若要編輯 CMakeLists.txt 檔案,請在 [方案總管] 中以滑鼠右鍵按一下該檔案,然後選擇 [開啟]。 如果您對檔案進行變更,則會顯示黃色狀態列,並通知您 IntelliSense 將會更新。 它可讓您取消更新作業。 如需 CMakeLists.txt 的相關資訊,請參閱 CMake 文件。

    它包含行專案 (hello-cmake)、add_subdirectory (測試)、add_executable (hello hello.cpp),以及安裝 (TARGETS hello DESTINATION hello/bin)。 視窗頂端的訊息表示,C++ IntelliSense 資訊會在 CMake 完成生成快取後刷新。

    一旦您儲存檔案,設定步驟會自動再次執行,並在 [輸出] 視窗中顯示資訊。 錯誤和警告會顯示在 [錯誤清單] 或 [輸出] 視窗中。 按兩下 [錯誤清單] 中的錯誤,即可瀏覽至 CMakeLists.txt 中有問題的那一行。

    CMakeLists.txt 中第 3 行的 CMake 錯誤訊息被醒目顯示。 詳細資料是 CMake 找不到 sqlite3 所提供的套件組態檔。 CMake 已在 CMAKE_MODULE_PATH 中尋找,但找不到。 建議將安裝前置詞「sqlite3」新增至 CMAKE_PREFIX_PATH,或將 sqlite3_DIR 設定為包含 sqlite3Config.cmake 和/或 sqlitet3-config.cmake 的目錄。

    CMake 的語言服務

    CMake 的語言服務可在 Visual Studio 2019 16.5 版或更新版本中取得。 語言服務支援程式碼導航功能,例如 移至定義、查看定義以及對 CMake 變數、函式和目標 尋找所有參考,以便使用於 CMake 腳本檔案。 如需詳細資訊,請參閱 CMake 指令碼的程式碼瀏覽。

    顯示找到 SUPERTUX_SOURCES_CXX 位置的結果。 例如,在 list(SORT SSUPERTUX_SOURCES_CXX)、file(GLOB SUPERTUX_SOURCES_CXX) 等等。

    CMake 專案操作

    在 Visual Studio 2019 版本 16.5 或更高版本中,提供 CMake 專案操作。 專案作可讓您在 CMake 專案中新增、移除和重新命名來源檔案和目標,而不需手動編輯 CMake 腳本。 當您從 [方案總管] 新增或移除檔案時,Visual Studio 會自動編輯您的 CMake 專案。 可能有多個合理的地方來新增或移除 CMake 指令碼的參考。 如果是,Visual Studio 會詢問您想要變更的位置,並顯示建議變更的預覽。 如需逐步指示,請參閱在 CMake 專案中新增、移除和重新命名檔案和目標。

    樹狀檢視會顯示 CMakeLists.txt,其底下有兩個項目:add_executable 和設定。 已勾選設定。 預覽視窗會顯示將進行變更的位置。 行集PROJECT_SRC "CmakeProject4.cpp" "CMakeProject4.h" 中,「Demo.cpp」會在右括號前被醒目顯示。 [套用] 按鈕接受變更,或者您可以按 [取消]。

    CMake 專案的 IntelliSense

    根據預設,Visual Studio 會使用符合使用中 CMake 組態所指定編譯器和目標架構的 IntelliSense 模式。

    如果 CMakePresets.json 是作用中的 CMake 組態檔,您可以使用 Visual Studio 設定廠商對應中的 intelliSenseMode 和 intelliSenseOptions 來指定 IntelliSense 選項。 如需詳細資訊,請參閱 Visual Studio 設定廠商對應參考。

    如果 CMakeSettings.json 是使用中的 CMake 組態檔,您可以在 intelliSenseMode 中使用 CMakeSettings.json 來指定 IntelliSense 選項。 如需詳細資訊,請參閱 CMakeSettings.json 參考。

    使用 CMake 工具鏈檔案設定 IntelliSense

    在 Visual Studio 2019 16.9 版和更新版本中,當您使用 CMake 工具鏈檔案時,Visual Studio 會在 CMake 專案中根據 CMake 變數自動設定 IntelliSense。 如需詳細資訊,請參閱使用 CMake 工具鏈檔案設定 IntelliSense。

    Vcpkg 整合

    在 Visual Studio 中開啟的 CMake 專案會與跨平台 C/C++ 相依性管理員 vcpkg 整合。 在搭配 Visual Studio 使用 vcpkg 之前,您必須執行 vcpkg integrate install。 如需 vcpkg 的指示和詳細資訊,請參閱:

    在 Visual Studio 中搭配 CMake 安裝和使用套件
  • CMake 專案中的 vcpkg

    如果 CMakeSettings.json 是使用中的組態檔,Visual Studio 會自動將 vcpkg 工具鏈檔案 ( vcpkg.cmake ) 傳遞至 CMake。 當您在 CMake 設定組態中指定任何其他工具鏈時,會自動停用此行為。

    如果 CMakePresets.json 是您目前的組態檔案,您需要在 vcpkg.cmake 中將路徑設定為 CMakePresets.json 。 我們建議使用 VCPKG_ROOT 環境變數,而不是絕對路徑來保留檔案可共用。 如需詳細資訊,請參閱 啟用 vcpkg 與 CMake 預設的整合 。 CMakePresets.json 適用於 Visual Studio 2019 16.10 版或更新版本,而且是建議的 CMake 組態檔。

    從命令列執行 CMake

    如果 CMakePresets.json 是作用中的 CMake 組態檔,則您可以輕鬆地在 Visual Studio 外部重現本機組建。 如需詳細資訊,請參閱 從命令列或 CI 管線執行 CMake 。 CMakePresets.json 受 Visual Studio 2019 16.10 版或更新版本支援,而且是建議的 CMake 組態檔。

    如果 CMakeSettings.json 是作用中的 CMake 組態檔,則您必須手動將檔案中 CMakeSettings.json 編碼的自變數傳遞至 CMake。 如果您從 Visual Studio 安裝程式安裝 CMake,您可以依照下列步驟從命令行執行它:

  • 執行適當的 vsdevcmd.bat 檔案 (x86/x64)。 如需詳細資訊,請參閱 從命令行使用 Microsoft C++ 工具組 。

  • 切換至您的輸出資料夾。

  • 執行 CMake 以建置或設定您的應用程式。

    Visual Studio 2017 具有豐富的 CMake 支援,包括 跨平台的 CMake 專案 。 適用於 CMake 的 Visual C++ 工具 元件使用 [開啟資料夾] 功能,讓 IDE 直接取用 CMake 專案檔 (例如 CMakeLists.txt ) 供 IntelliSense 和瀏覽之用。 支援 Ninja 和 Visual Studio 產生器。 如果您使用 Visual Studio 產生器,它會產生暫存專案檔,並將其傳遞至 MSBuild。 不過,絕不會針對 IntelliSense 或瀏覽目的載入專案。 您也可以匯入現有的 CMake 快取。

    Installation

    適用於 CMake 的 Visual C++ 工具 會安裝為 使用 C++ 進行桌面開發 ,以及 使用 C++ 進行 Linux 開發 工作負載的一部分。

    如需詳細資訊,請參閱 在 Visual Studio 中安裝 C++ Linux 工作負載 。

    IDE 整合

    當您選擇 [檔案 > 開啟 > 資料夾] 以開啟包含 CMakeLists.txt 檔案的資料夾時,會發生下列情況:

  • Visual Studio 會將 [CMake] 功能表項目新增至主功能表,並提供檢視和編輯 CMake 指令碼的命令。

    方案總管 會顯示資料夾結構及檔案。

  • Visual Studio 會執行 CMake,並選擇性為預設「組態」 (即 x86 偵錯) 產生 CMake 快取。 CMake 命令列會連同 CMake 的其他輸出一起顯示在 輸出視窗 中。

  • Visual Studio 會在背景處開始建立原始程式檔的索引,以啟用 IntelliSense、瀏覽資訊、重構等功能。 Visual Studio 會在您工作時,監視編輯器和磁碟上的變更,以確保其索引與來源同步。

    您可以開啟包含任意數目之 CMake 專案的資料夾。 Visual Studio 會偵測並設定工作區中的所有最上層 CMakeLists.txt 檔案。 您的工作區中的所有 CMake 專案均可進行 CMake 操作(設定、建置、偵錯)、C++ IntelliSense 和瀏覽功能。

    C Make 專案的檔案和資料夾是可見的。 其中有測試子目錄、CMakeLists.txt 和 hello.cpp。 有一個 hello-cmake-vcpkg 資料夾,其中包含 CMakeLists.txt、CMakeSettings.json 和 hello.cpp。

    您也可以檢視依目標以邏輯方式組織的專案。 從 方案總管 工具列的下拉式清單中選擇 目標檢視 :

    Visual Studio 會使用稱為 CMakeSettings.json 的檔案,儲存 CMake 的環境變數或命令列選項。 CMakeSettings.json 也可讓您定義及儲存多個 CMake 組建組態。 您可以在 IDE 中方便地切換不同模式。

    否則,就像在任何 CMake 專案中一樣,僅使用 CMakeLists.txt 指定來源檔案、尋找程式庫、設定編譯器和連結器選項,然後指定其他組建系統相關資訊。

    如果您需要在偵錯時將引數傳遞給可執行檔,您可以使用稱為 launch.vs.json 的另一個檔案。 在某些情況下,Visual Studio 會自動產生這些檔案。 您可以手動編輯它們,甚至自行建立檔案。

    至於其他類型的「開啟資料夾」專案,會使用兩個其他的 JSON 檔案: CppProperties.json 和 tasks.vs.json 。 它們都和 CMake 專案不相關。

    匯入現有的快取

    當您匯入現有的 CMakeCache.txt 檔案時,Visual Studio 會自動擷取自定義變數,並根據這些變數建立預先填入的 CMakeSettings.json 檔案。 原始快取不會以任何方式修改。 它仍然可以從命令列使用,或使用任何用來產生它的工具或 IDE。 新的 CMakeSettings.json 檔案會與專案根目錄的 CMakeLists.txt 放在一起。 Visual Studio 會根據設定檔產生新的快取。 您可以在 [工具]> [選項]> [CMake]> [一般] 對話方塊中覆寫自動快取生成。

    快取中的所有項目不會全部匯入。 產生器和編譯器位置等屬性會取代成已知適用於 IDE 的預設值。

    匯入現有的快取

  • 從主功能表中,選擇 檔案 > 開啟 > CMake :

    若要建置 CMake 專案,您有下列選項:

  • 在 [一般] 工具列中,尋找 [組態] 下拉式清單。 它預設可能會顯示 Linux-Debug 或 x64-Debug 。 選取慣用的組態,然後按 F5 ,或選擇工具列上的 [執行] (綠色三角形) 按鈕。 專案會先自動建置,如同 Visual Studio 方案一樣。

  • 在 CMakeLists.txt 中的 [方案總管] 上按一下滑鼠右鍵,然後從快捷功能表中選取 [建置] 。 如果您的資料夾結構中有多個目標,您可以選擇全部建置或只建置一個特定目標。

  • 從主功能表,選取 [建置 > 建置方案] ( F7 或 Ctrl+Shift+B )。 確保已在 [一般] 工具列 的 [啟動項目] 下拉式清單 中選擇了 CMake 目標。

    功能表有 [新增]、[開啟]、[設定工作]、[建置]、[全部清除] 等選項。

    您可以自訂 CMakeSettings.json 檔案中的組建組態、環境變數、命令列引數和其他設定。 它可讓您在不修改 CMakeLists.txt 檔案的情況下進行變更。 如需詳細資訊,請參閱 自定義 CMake 組建設定 。

    如您所預期,建置結果會顯示在 [輸出] 視窗和 [錯誤清單] 中。

    C 針對可能導致數據遺失的轉換發出建置警告,例如從浮點數轉換成整數都可見。

    在具有多個建置目標的資料夾中,您可以指定 CMake 的目標來進行建置:在 [CMake] 功能表上選擇 [建置] 項目,或選擇 CMakeLists.txt 捷徑功能表以指定目標。 如果您在 CMake 專案中按下 Ctrl+Shift+B ,它會編譯目前的活躍文件。

    偵錯 CMake 專案

    若要對 CMake 專案進行偵錯,請選擇慣用的組態,然後按 F5 。 或者,按工具列中的 [執行] 按鈕。 如果 [ 執行] 按鈕顯示 [ 選取啟動專案 ],請選取下拉式箭號,然後選擇您想要執行的目標。 (在 CMake 專案中, [目前檔 ] 選項僅適用於.cpp檔案。

    如果自上次建置以來已有所變更,[執行] 或 F5 命令會先建置專案。

    您可以在 launch.vs.json 檔案中設定屬性,自訂 CMake 偵錯工作階段。 如需詳細資訊,請參閱 設定 CMake 偵錯工作階段 。

    編輯 CMakeLists.txt 檔案

    若要編輯 CMakeLists.txt 檔案,請在 [方案總管] 中以滑鼠右鍵按一下該檔案,然後選擇 [開啟] 。 如果您對檔案進行變更,則會顯示黃色狀態列,並通知您 IntelliSense 將會更新。 它可讓您取消更新作業。 如需 CMakeLists.txt 的相關資訊,請參閱 CMake 文件 。

    檔案包含專案(hello-cmake)、add_subdirectory(tests)、add_executable(hello hello.cpp),以及 install(TARGETS hello DESTINATION hello/bin)。 視窗頂端的訊息表示,C++ IntelliSense 資訊會在 CMake 完成生成快取後刷新。

    一旦您儲存檔案,設定步驟會自動再次執行,並在 [輸出] 視窗中顯示資訊。 錯誤和警告會顯示在 [錯誤清單] 或 [輸出] 視窗中。 按兩下 [錯誤清單] 中的錯誤,即可瀏覽至 CMakeLists.txt 中有問題的那一行。

    CMakeLists.txt 中第 3 行的 CMake 錯誤訊息被醒目顯示。 詳細資料是 CMake 找不到 sqlite3 提供的套件組態檔。 CMake 已在 CMAKE_MODULE_PATH 中尋找,但找不到。 建議將安裝前置詞「sqlite3」新增至 CMAKE_PREFIX_PATH,或將 sqlite3_DIR 設定為包含 sqlite3Config.cmake 和/或 sqlitet3-config.cmake 的目錄。

    CMake 設定步驟

    當 CMakeSettings.json 或 CMakeLists.txt 檔案發生重大變更時,Visual Studio 會自動重新執行 CMake 設定步驟。 如果設定步驟完成且沒有錯誤,則會在 C++ IntelliSense 和語言服務中取得所收集的資訊。 它也用於建置和偵錯作業。

    多個 CMake 專案可能會使用相同的 CMake 組態名稱(例如 x86-Debug )。 所有設定都會在選取該組態時進行設定和建置 (在其本身的組建根資料夾中)。 您可以從所有參與該 CMake 組態的 CMake 專案中偵錯目標程式碼。

    內容選單會顯示可以建置的項目。 在此情況下,hello-cmake-a\hello-cmake.exe(Project hello-cmake)和 hello-cmake-b\hello-cmake.exe(Project hello-cmake)。 後者被標示。

    您可以將組建和偵錯工作階段限制為工作區中專案的子集。 在 CMakeSettings.json 檔案中建立具有唯一名稱的新組態。 然後,僅將組態套用至這些專案。 選取該組態時,IntelliSense 和組建與偵錯命令只會套用至那些指定的專案。

    針對 CMake 快取錯誤進行疑難排解

    如果您需要 CMake 快取狀態的詳細資訊以診斷問題,請開啟 [CMake] 主功能表,或在 [方案總管] CMakeLists.txt 中開啟 捷徑功能表,執行下列其中一個命令:

    檢視快取 會在編輯器中開啟來自組建根資料夾的 CMakeCache.txt 檔案。 如果您清除快取,您在此對 CMakeCache.txt 所做的任何編輯都會遭到抹除。 若要在清除快取之後進行保留的變更,請參閱 自定義 CMake 設定 。

  • [開啟快取資料夾] 會將檔案總管視窗開啟至組建根資料夾。

  • [清除快取] 會刪除組建根資料夾,讓後續 CMake 設定步驟從全新的快取開始。

  • 「產生快取」 會強制執行產生步驟,即使 Visual Studio 認為環境已是最新狀態。

    您可以在 [工具 > 選項 > CMake > 一般] 對話方塊中停用自動快取產生。

    單一檔案編譯

    若要在 CMake 專案中建置單一檔案,請以滑鼠右鍵按一下 [方案總管] 中的檔案。 在快顯功能表中選擇 編譯 。 您也可以使用主選單中的 [CMake] 來建置目前在編輯器中開啟的檔案。

    如果您從 Visual Studio 安裝程式安裝 CMake,您可以依照下列步驟從命令行執行它:

  • 執行適當的 vsdevcmd.bat 檔案 (x86/x64)。 如需詳細資訊,請參閱 在命令列上建置 。

  • 切換至您的輸出資料夾。

  • 執行 CMake 以建置或設定您的應用程式。

    在 Visual Studio 2015 中,Visual Studio 使用者可以使用 CMake 產生器 來產生 MSBuild 專案檔,再由 IDE 取用這些檔案供 IntelliSense、瀏覽和編譯之用。

    教學課程:在 Visual Studio 中建立 C++ 跨平台專案
  • 設定 Linux CMake 專案 連線到遠端 Linux 電腦 自訂 CMake 建置設定 CMakeSettings.json 結構參考 設定 CMake 偵錯工作階段 部署、執行及偵錯 Linux 專案 CMake 預先定義組態參考 CMake 專案中的 vcpkg 在 Visual Studio 中搭配 CMake 安裝和使用套件