翻譯|使用教程|編輯:鮑佳佳|2020-10-26 14:05:42.597|閱讀 1050 次
概述:本教程將指導(dǎo)您完成創(chuàng)建和開發(fā)簡單CMake項目的過程。我們將逐步學(xué)習(xí)CMake作為構(gòu)建系統(tǒng)的基礎(chǔ)知識,以及CMake項目的CLion設(shè)置和操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
CLion是一款專為開發(fā)C及C++所設(shè)計的跨平臺IDE。它是以IntelliJ為基礎(chǔ)設(shè)計的,包含了許多智能功能來提高開發(fā)人員的生產(chǎn)力。這種強大的IDE幫助開發(fā)人員在Linux、OS X和Windows上來開發(fā)C/C++,同時它還使用智能編輯器來提高代碼質(zhì)量、自動代碼重構(gòu)并且深度整合CMake編譯系統(tǒng),從而提高開發(fā)人員的工作效率。感興趣的朋友歡迎下載試用!CLion現(xiàn)已加入在線訂購,點擊此處查看價格詳情>>
本教程將指導(dǎo)您完成創(chuàng)建和開發(fā)簡單CMake項目的過程。我們將逐步學(xué)習(xí)CMake作為構(gòu)建系統(tǒng)的基礎(chǔ)知識,以及CMake項目的CLion設(shè)置和操作。
上文中我們講述了前七個步驟,今天我們將繼續(xù)上文的內(nèi)容。
5.添加包含目錄
為了使用位于單獨目錄中的其他標題,我們需要將它們添加到所有目標或某些特定目標中。
例如,讓我們在項目根目錄下創(chuàng)建三個目錄,包括include,includes / general,includes / math,并在CMakeLists.txt中編寫以下命令:
include_directories(includes/math) include_directories(includes/general)
這兩個命令使位于一般和數(shù)學(xué)中的標頭可用于包括來自所有目標源的標頭。例如,我們可以寫#include "header_math.h"在calc.cpp。
僅當您將標題和源明確包含在CMakeLists.txt中或?qū)⑵浒谝呀?jīng)屬于該項目的其他文件中時,才能正確解析添加到該項目的標題和源
6.鏈接庫
靜態(tài)庫在上文第三部中,我們創(chuàng)建了一個名為test_library的靜態(tài)庫(默認文件名為libtest_library.a)。
讓我們在項目根目錄下創(chuàng)建一個lib目錄,并將libtest_library.a從其默認位置(cmake-build-debug)復(fù)制到此文件夾。
我們將使用兩個命令將靜態(tài)庫鏈接到cmake_testapp目標:find_library提供完整路徑,然后我們通過變量將其直接傳遞到target_link_libraries命令中${TEST_LIBRARY}:
注意:確保放置target_link_libraries在add_executable命令之后,以便CMake在鏈接庫之前實際構(gòu)建目標。
動態(tài)庫(Boost示例)
為了說明鏈接動態(tài)庫,我們將舉一個使用Boost.Test框架的示例。
讓我們int add_values (int a, int b) { return a+b;} 在calc.cpp中編寫一個簡單的函數(shù) ,并使用函數(shù)聲明創(chuàng)建關(guān)聯(lián)的標頭calc.h。我們將在Boost.Test框架的幫助下測試此功能。
有關(guān)使用Boost.Test的詳細信息,請參閱單元測試教程。
隨著我們的項目變得越來越復(fù)雜,CMakeLists.txt文件可能變得難以維護。為避免這種情況并建立透明的項目結(jié)構(gòu),我們將測試提取到子項目中。
讓我們添加一個名為test的目錄,并在其中創(chuàng)建源文件tests.cpp。另外,我們需要為該目錄提供其自己的CMakeLists.txt文件(在“Project”目錄中右鍵單擊test,然后選擇New | CMakeLists.txt):
子目錄test / CMakeLists.txt腳本最初為空。我們可以通過使用libs為Boost插入一個實時模板來開始填充它。按或單擊Code | Insert Live Template,然后選擇: Ctrl+J boost_with_libs
將插入的代碼調(diào)整為以下內(nèi)容:
代碼set(Boost_USE_STATIC_LIBS OFF) #enable dynamic linking # search for unit_test_framework find_package(Boost REQUIRED COMPONENTS unit_test_framework) include_directories(${Boost_INCLUDE_DIR}) # 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}) # link Boost with code library target_link_libraries(cmake_testapp_boost test_library)
另外,我們需要將add_subdirectory(test)命令放在根 CMakeLists.txt中,以使我們的測試目標cmake_testapp_boost可用于主版本。
放置在根CMake腳本中時,此命令聲明一個子項目test,該子項目具有自己的CMakeLists.txt。
在兩個CMakeLists.txt文件中重新加載更改后,CLion為cmake_testapp_boost目標創(chuàng)建Run/Debug配置。這是常規(guī)的CMake應(yīng)用程序配置,我們可以立即啟動。但是,為了能夠使用內(nèi)置的測試運行器,讓我們從Boost.Test模板中創(chuàng)建另一個配置:
現(xiàn)在,我們可以運行此配置并獲取測試結(jié)果。測試運行器顯示套件中的測試樹,它們的輸出,狀態(tài)和持續(xù)時間:
7.了解更多
為了方便大家深入了解CLion中的CMake,接下來我將為大家?guī)硪韵聝?nèi)容:
更改項目根目錄
重置CMake緩存
指定編譯器標志
切換編譯器
運行構(gòu)建操作和CMake安裝
使用環(huán)境變量和CLION_IDE宏。
今天的內(nèi)容你學(xué)會了嗎?前往慧都網(wǎng)免費下載最新版嘗試一下,并在評論分享你的想法?;鄱悸≈赝瞥觥?a target="_blank">軟件國產(chǎn)化服務(wù)季 ” 低價狂潮,省到尖叫最高立減2999元!低至797元!想要購買Clion正版授權(quán)的朋友歡迎。
JetBrain技術(shù)交流群現(xiàn)已開通,QQ搜索群號“786598704”或者掃描下方二維碼即可加入
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: