翻譯|使用教程|編輯:吳園園|2019-08-19 17:27:30.300|閱讀 3769 次
概述:CLion是一款專為開發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。本篇教程將為您介紹如何管理Makefile項(xiàng)目。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
CLion是一款專為開發(fā)C及C++所設(shè)計(jì)的跨平臺(tái)IDE。它是以IntelliJ為基礎(chǔ)設(shè)計(jì)的,包含了許多智能功能來提高開發(fā)人員的生產(chǎn)力。這種強(qiáng)大的IDE幫助開發(fā)人員在Linux、OS X和Windows上來開發(fā)C/C++,同時(shí)它還使用智能編輯器來提高代碼質(zhì)量、自動(dòng)代碼重構(gòu)并且深度整合CMake編譯系統(tǒng),從而提高開發(fā)人員的工作效率。
雖然目前在Clion中不支持Makefile作為項(xiàng)目格式,但您可以使用以下解決方法在File Watchers和編譯數(shù)據(jù)庫的幫助下管理Makefile項(xiàng)目。
下面的示例顯示了如何構(gòu)建監(jiān)視Makefile中的更改的元構(gòu)建系統(tǒng),然后相應(yīng)地重新生成和重新加載編譯數(shù)據(jù)庫。這樣,它允許您從CLion內(nèi)部完全管理Makefile項(xiàng)目。此外,您可以借助自定義生成目標(biāo)和自定義運(yùn)行/調(diào)試配置來構(gòu)建和運(yùn)行/調(diào)試此類項(xiàng)目。
假設(shè)我們有一個(gè)簡(jiǎn)單的Makefile項(xiàng)目,包含三個(gè)模塊,general,io_lib和math_lib,每個(gè)模塊都存儲(chǔ)在一個(gè)包含Makefile的單獨(dú)目錄中,在根目錄中,是構(gòu)建所有目標(biāo)的主Makefile:
TARGETS = Math Io Generalall: $(TARGETS)Math: @$(MAKE) -C math_lib -f MakefileIo: @$(MAKE) -C io_lib -f MakefileGeneral: @$(MAKE) -C general -f Makefileclean: @$(MAKE) -C io_lib -f Makefile clean @$(MAKE) -C math_lib -f Makefile clean @$(MAKE) -C general -f Makefile clean
現(xiàn)在讓我們采取以下步驟:
首先,我們需要為我們的測(cè)試項(xiàng)目創(chuàng)建一個(gè)JSON編譯數(shù)據(jù)庫。我們將用于此的工具是編譯生成器。安裝該工具后,我們可以compiledb make從項(xiàng)目根目錄運(yùn)行并獲取compile_commands.json文件:
這是一個(gè)可選步驟,但對(duì)我們的任務(wù)非常有幫助:安裝了Makefile Support插件后 ,GNU Makefile文件類型在CLion中變得可識(shí)別,我們獲得了Makefile的語法高亮和編輯功能。
下一步是將我們?cè)诓襟E1中創(chuàng)建的編譯數(shù)據(jù)庫打開為CLion中的項(xiàng)目。導(dǎo)入成功完成后,我們可以開始使用項(xiàng)目文件。
要在compile_command.json中的每次更改時(shí)自動(dòng)重新加載項(xiàng)目,我們需要在Settings / Preferences |中設(shè)置Use auto-import復(fù)選框。 構(gòu)建,執(zhí)行,部署| 編譯數(shù)據(jù)庫:
4.為Makefile創(chuàng)建文件監(jiān)視器
現(xiàn)在我們可以創(chuàng)建一個(gè)文件監(jiān)視器來跟蹤Makefile中的更改。讓我們導(dǎo)航到設(shè)置/首選項(xiàng)| 工具| 文件監(jiān)視器,創(chuàng)建一個(gè)新的文件監(jiān)視器并將其分配給位于項(xiàng)目根目錄和子目錄中的GNU Makefile類型的所有文件(注意$ProjectFileDir$宏):
現(xiàn)在,讓我們改變Makefiles中的內(nèi)容。我們可以在IDE外部執(zhí)行此操作(因?yàn)樵O(shè)置了Trigger,外部更改上的觀察器復(fù)選框),或者直接來自CLion編輯器。
例如,我們可以向math_lib模塊添加一個(gè)新的源文件,并將其放入相應(yīng)Makefile中的源列表中:
在該更改之后,Makefile_watcher被觸發(fā)運(yùn)行 compiledb -n make。此命令在不執(zhí)行實(shí)際構(gòu)建的情況下重新生成編譯數(shù)據(jù)庫,CLion會(huì)自動(dòng)重新加載它,以便項(xiàng)目與修改后的Makefile同步。
現(xiàn)在compile_commands.json中有四個(gè)條目:
同樣,如果我們決定不將io_funcs庫包含 到構(gòu)建中,我們可以Io從主Makefile中刪除目標(biāo):
為響應(yīng)此更改,Makefile_watcher再次觸發(fā),并相應(yīng)地重新加載編譯數(shù)據(jù)庫:
我們可能想要做的最后一件事是使Makefile_watcher全局化。啟用此設(shè)置后,觀察程序?qū)⒃谒许?xiàng)目中可用,因此我們可以輕松地將其重用于我們?cè)贑Lion中管理的其他Makefile應(yīng)用程序:
這樣,文件觀察器和編譯數(shù)據(jù)庫的組合創(chuàng)建了一種機(jī)制,可以使用基于Make的項(xiàng)目,而無需讓CLion編輯Makefile或手動(dòng)重新創(chuàng)建編譯數(shù)據(jù)庫。此外,您可以將此方法應(yīng)用于任何具有用于生成編譯數(shù)據(jù)庫的補(bǔ)充工具的構(gòu)建系統(tǒng)。
請(qǐng)注意,目前,在此方案中,CLion會(huì)為觸發(fā)文件監(jiān)視器的Makefile中的每個(gè)更改重新加載整個(gè)編譯數(shù)據(jù)庫。因此,將此工作流應(yīng)用于大型代碼庫時(shí)可能會(huì)遇到性能問題。
以上就是管理Makefile項(xiàng)目教程的全部?jī)?nèi)容,您學(xué)會(huì)了嗎?歡迎評(píng)論分享您的疑問和看法~
想要購買Clion正版授權(quán)的朋友可以。
更多精彩內(nèi)容,敬請(qǐng)關(guān)注下方的微信公眾號(hào),及時(shí)獲取產(chǎn)品最新資訊▼▼▼
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: