翻譯|使用教程|編輯:吳園園|2019-08-07 17:35:31.637|閱讀 5442 次
概述:本教程將指導您完成創建和開發簡單CMake項目的過程。我們將逐步學習CMake作為構建系統的基礎知識,以及CMake項目的CLion設置和操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
CLion是一款專為開發C及C++所設計的跨平臺IDE。它是以IntelliJ為基礎設計的,包含了許多智能功能來提高開發人員的生產力。這種強大的IDE幫助開發人員在Linux、OS X和Windows上來開發C/C++,同時它還使用智能編輯器來提高代碼質量、自動代碼重構并且深度整合CMake編譯系統,從而提高開發人員的工作效率。
CLion 2019.3速度高達加入了基于Clangd提供商代碼完成,消除了各種UI凍結,并介紹了許多其他的性能改進。它增強了與CMake的集成,增加了Ninja生成器支持,并提供了代碼覆蓋范圍和WSL2支持。調試器支持已在很多方面得到了顯著改善。最后,對C ++ 20的Concepts的支持包括重構,導航和代碼完成。戳此處查看詳情>>
CMake是一個元構建系統,它使用名為 CMakeLists的腳本為特定環境生成構建文件(例如,Unix機器上的makefile)。在CLion中創建新的CMake項目時,會在項目根目錄下自動生成CMakeLists.txt文件。
讓我們從創建一個新的CMake項目開始。為此,請轉到文件| New Project并選擇C ++ Executable。在我們的示例中,項目名稱是cmake_testapp和C ++ 14中選定的語言標準。
默認情況下,我們使用單個源文件main.cpp和包含以下命令的自動創建的根CMakeLists.txt獲取項目:
命令 | 描述 |
cmake_minimum_required(VERSION 3.13) | 指定CMake所需的最低版本。它設置為CLion捆綁的CMake版本(始終是最新版本之一)。 |
project(cmake_testapp) | 根據我們在項目創建期間提供的內容定義項目名稱。 |
set(CMAKE_CXX_STANDARD 14) | 設置的 CMAKE_CXX_STANDARD變量的值設置為 14,因為我們選擇創建項目時。 |
add_executable(cmake_testapp main.cpp) | 添加將從main.cpp構建的 cmake_testapp可執行目標。 |
Target是使用CMake腳本構建的可執行文件或庫。您可以在單個腳本中定義多個構建目標。
目前,我們的測試項目只有一個構建目標cmake_testspp。加載第一個項目后,CLion會自動添加與此目標關聯的運行/調試配置:
單擊切換臺中的編輯配置或選擇運行| 從主菜單中編輯配置以查看詳細信息。目標名稱和可執行文件名稱直接來自CMakeLists.txt:
請注意此對話框的Before啟動區域:默認情況下,Build設置為啟動前步驟。因此,我們可以使用此配置不僅可以調試或運行目標,還可以執行構建。
現在讓我們添加另一個源文件calc.cpp并從中創建一個新的可執行目標。
右鍵單擊Project樹中的根文件夾,然后選擇New | C / C ++源文件。CLion提示將文件添加到現有目標:
由于我們的目標是創建新目標,因此我們清除添加到目標復選框。因此,CLion通知我們新文件當前不屬于任何目標:
現在讓我們在CMakeLists.txt中手動聲明一個新目標。請注意,CLion將CMake腳本視為常規代碼文件,因此我們可以使用代碼輔助功能,如語法突出顯示,自動完成和導航:
我們可以重新加載項目一次(重新加載更改)或啟用自動重新加載,讓CLion靜默應用CMakeLists.txt中的所有更改。啟用/禁用自動重新加載的選項也可在“設置/首選項”中使用 構建,執行,部署| CMake。
重新加載項目后,CLion為新目標添加了一個Run / Debug配置:
到目前為止,我們添加的目標是可執行文件,我們用它add_executable來聲明它們。對于庫目標,我們需要另一個命令 - add_library。例如,讓我們從calc.cpp源文件創建一個靜態庫:
add_library (test_library STATIC calc.cpp)
與可執行文件一樣,CLion在重新加載項目后為庫目標添加了一個Run / Debug配置:
但是,這是一個不可執行的配置,因此如果我們嘗試運行或調試它,我們將獲得Executable未指定的錯誤消息。
到目前為止創建的所有運行/調試配置都是調試配置,這是為我們的項目自動配置的CMake配置文件的默認構建類型。CMake配置文件是項目構建的一組選項。它指定的工具鏈,建設型,CMake的標志,用于存儲構建工件路徑,使編譯選項和環境變量。
例如,要分離Debug和Release版本,我們需要在Settings / Preferences |中添加()一個新的CMake配置文件 構建,執行,部署| CMake并將其構建類型設置為Release:
請注意生成路徑字段,該字段指定構建結果的位置。默認文件夾是cmake的建造,調試的調試配置文件和cmake的建造釋放的釋放曲線。您可以隨時設置您選擇的其他位置。
現在,運行/調試配置切換器顯示兩個可用的配置文件:
切換配置或CMake配置文件可能會影響解析代碼時使用的預處理器定義:例如,當Debug和Release版本有單獨的標志或某些變量根據構建類型采用不同的值時。這稱為解決上下文 ; 它定義了CLion如何執行語法突出顯示以及其他代碼洞察,如查找用法,重構和代碼完成。在配置之間切換時,將自動更改當前文件的解析上下文。此外,您可以在上下文切換器中手動選擇它(
為了使用位于不同目錄中的其他標頭,我們需要將它們添加到所有目標或某些特定目標。例如,讓我們在項目根目錄下創建三個目錄,包括,includes / general,includes / math,并在CMakeLists.txt中編寫以下內容:
include_directories(includes/general)
- 包括所有目標的一般內容 ;
target_include_directories (cmake_testapp_calc PUBLIC includes/math)
僅包含cmake_testapp_calc目標的數學運算。
請注意,target_include_directories應放在add_executable(或add_library)之后,目標名稱已經可用。
現在,包含/ general或includes / math的標題可以直接包含在源代碼中,例如:
只有在CMakeLists.txt中明確包含它們或者將它們包含在已屬于項目的其他文件中時,才能正確解析添加到項目中的標題和源。
在第3步,我們創建了一個名為test_library的靜態庫。讓我們從默認位置(即cmake-build-debug)將其放在項目根目錄下的lib目錄中,并將其鏈接到cmake_testapp目標。
我們將使用兩個命令來鏈接靜態庫:find_library提供完整路徑,然后我們通過變量將其直接傳遞給target_link_libraries命令${TEST_LIBRARY}。
注:請確保放置target_link_libraries后add_executable的命令,從而使C進行庫鏈接之前實際編制目標。
為了說明鏈接動態庫,我們將舉例說明如何使用Boost.Test框架。
讓我們int add_values (int a, int b) { return a+b;} 在calc.cpp中編寫一個簡單的函數 ,并使用函數聲明創建一個關聯的頭文件calc.h。我們將在Boost.Test框架的幫助下測試這個函數。
隨著我們的項目變得更加復雜,根CMakeLists.txt文件可能變得難以維護。為避免這種情況并構建透明的項目結構,我們將測試提取到子項目中。為此,我們將創建一個名為test的單獨目錄,并為其提供自己的CMakeLists.txt文件(在Project樹中右鍵單擊test并選擇New | CMakeLists.txt):
子目錄test / CMakeLists.txt腳本最初為空。讓我們通過為libs插入Boost的實時模板來開始填充它。按或單擊代碼| 插入實時模板,然后選擇: Ctrl+Jboost_with_libs
讓我們調整插入的代碼,如下所示:
set (Boost_USE_STATIC_LIBS OFF) #enable dynamic linking#search for unit_test_framework find_package (Boost REQUIRED COMPONENTS unit_test_framework)#create a cmake_testapp_boost target from test.cpp add_executable (cmake_testapp_boost tests.cpp)#link Boost libraries to the new target target_link_libraries (cmake_testapp_boost ${Boost_LIBRARIES})
此外,我們需要將add_subdirectory(test)命令放在根 CMakeLists.txt中,以使我們的測試目標cmake_testapp_boost可用于主構建。此命令放置在根CMake腳本中時,聲明具有自己的CMakeLists.txt的子項目測試。
重新加載兩個CMakeLists.txt文件中的更改后,CLion將為cmake_testapp_boost目標創建運行/調試配置。這是我們可以立即運行/調試的常規CMake應用程序配置。但是,為了能夠使用內置的測試運行器,讓我們從Boost.Test模板創建另一個配置:
現在讓我們運行此配置并獲取測試結果。測試運行器顯示套件中的測試樹,它們的輸出,狀態和持續時間:
以上就是創建和開發簡單CMake項目的簡單教程,您學會了嗎?如果本篇教程對您有用的話,歡迎分享您的疑問和看法~
想要購買Clion正版授權的朋友可以。
有關產品資訊的更多精彩內容,敬請關注下方的微信公眾號▼▼▼
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: