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