翻譯|使用教程|編輯:吳園園|2020-05-27 11:01:06.143|閱讀 2795 次
概述:對于非CMake和非Gradle項目,您仍然可以從CLion提供的高級IDE功能中受益。一種方法是導入非CMake項目,然后讓CLion將其轉換為簡單的CMake結構。另一種選擇是通過加載項目的編譯數(shù)據(jù)庫來打開項目。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
CLion是一款專為開發(fā)C及C++所設計的跨平臺IDE。它是以IntelliJ為基礎設計的,包含了許多智能功能來提高開發(fā)人員的生產力。這種強大的IDE幫助開發(fā)人員在Linux、OS X和Windows上來開發(fā)C/C++,同時它還使用智能編輯器來提高代碼質量、自動代碼重構并且深度整合CMake編譯系統(tǒng),從而提高開發(fā)人員的工作效率。感興趣的朋友歡迎下載試用!CLion現(xiàn)已加入在線訂購,點擊此處查看價格詳情>>
對于非CMake和非Gradle項目,您仍然可以從CLion提供的高級IDE功能中受益。一種方法是導入非CMake項目,然后讓CLion將其轉換為簡單的CMake結構。另一種選擇是通過加載項目的編譯數(shù)據(jù)庫來打開項目。
使用編譯數(shù)據(jù)庫,CLion可以檢測項目文件并提取所有必需的編譯器信息,例如包含路徑和編譯標志。這種方法使您可以在IDE中進行操作并獲得其功能的完整體驗,同時使您的項目獨立于CMake或Gradle。
一個編譯數(shù)據(jù)庫是一個 JSON命名-格式化文件compile_commands.json 包含有關項目中每個編譯單元的結構化數(shù)據(jù)。
以下代碼段顯示了JSON編譯數(shù)據(jù)庫的示例:
{ "directory": "/Users/me/prj/Calendar/", "command": "/usr/local/bin/g++-7 -I/Users/me/prj/Calendar/calendars -g -std=c++11 -o calendar_run.dir/main.cpp.o -c /Users/me/prj/Calendar/main.cpp", "file": "/Users/me/prj/Calendar/main.cpp" }, { "directory": "/Users/me/prj/Calendar/calendars", "command": "/usr/local/bin/g++-7 -I/Users/me/prj/Calendar/calendars -g -std=c++11 -o calendars.dir/calendar_defs.cpp.o -c /Users/me/prj/Calendar/calendars/calendar_defs.cpp", "file": "/Users/me/prj/Calendar/calendars/calendar_defs.cpp" }
您可以看到稱為命令對象的條目數(shù)組。每個命令對象代表翻譯單元的主文件,工作目錄,實際的編譯命令(或參數(shù)列表),以及可選的由編譯步驟創(chuàng)建的輸出的名稱。
生成編譯數(shù)據(jù)庫
要獲得項目的編譯數(shù)據(jù)庫,您可以使用多種選擇:它可以由編譯器,構建系統(tǒng)和專用工具生成。以下是一些示例:
CMake:
使用CMAKE_EXPORT_COMPILE_COMMANDS 標志。你可以運行
cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON…
或將以下行添加到您的CMakeLists.txt腳本中:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
compile_commands.json 文件將被放入構建目錄。
CMAKE_EXPORT_COMPILE_COMMANDS僅由Makefile和Ninja 生成器實現(xiàn)。對于其他生成器,此選項將被忽略。
請注意,NMAKE生成器創(chuàng)建了不正確的編譯數(shù)據(jù)庫,這是一個已知問題
Clang(5.0及更高版本):
該-Mj 選項寫入每個輸入文件匯編條目。您可以將其用于項目中的每個文件,然后將輸出合并到JSON格式的編譯數(shù)據(jù)庫中
Ninja(1.2版及更高版本):
要獲取編譯數(shù)據(jù)庫,請使用 -t compdb選項。請注意,它需要使用規(guī)則名稱作為參數(shù):-t compdb rule1 rule2...Ninja構建文件(默認名稱build.ninja)中提供了規(guī)則列表,例如:
rule cc command = gcc -c -o $out $in description = CC $out rule link command = gcc -o $out $in description = LINK $out
要在只有一個名為的規(guī)則的情況下生成編譯數(shù)據(jù)庫cc,請指定:
-t compdb cc > compile_commands.json
但是對于多個規(guī)則,您需要從構建文件中獲取其確切名稱,并將其傳遞給 compdb
基于Make的項目:
該compiledb發(fā)電機工具,Makeup基礎構建系統(tǒng)創(chuàng)建編譯數(shù)據(jù)庫。
Bear和攔截構建工具:
從scan-build 進行Bear和intercept-build是通過在構建過程中攔截編譯器調用來幫助您獲得編譯數(shù)據(jù)庫的工具。
SourceTrail Visual Studio擴展:
SourceTrail Extension 可以為MS Visual Studio解決方案生成一個編譯數(shù)據(jù)庫。
在CLion中使用編譯數(shù)據(jù)庫
載入專案
為項目創(chuàng)建編譯數(shù)據(jù)庫后,可以將其加載到CLion中。導航到文件| 在主菜單上打開,選擇compile_commands.json文件或包含該文件的目錄,然后單擊“ 以項目形式打開”。
結果,檢測到項目文件,并且所有命令的狀態(tài)都在 compile_commands.json顯示在“ 構建工具”窗口中:
項目文件可以位于包含以下內容的目錄之外 compile_commands.json。CLion從編譯數(shù)據(jù)庫中提取實際路徑,并收集項目文件,無論它們位于何處。
現(xiàn)在,CLion的代碼洞察力,重構,分析和導航功能可完全用于您的項目。
CLion本機支持JSON文件格式,因此您可以編輯compile_database.json文件直接在IDE中顯示,并帶有突出顯示和代碼完成幫助。此外,CLion還會檢查您的合規(guī)性compile_database.json 文件與編譯數(shù)據(jù)庫JSON模式。例如,它會在命令條目中缺少屬性或使用錯誤類型時發(fā)出通知:
更改項目根目錄
默認情況下,項目根目錄設置為包含編譯數(shù)據(jù)庫文件的目錄。但是,這并不總是很方便:例如,如果某些項目文件位于目錄之外,compile_commands.json(即在項目根目錄之外),無論實際的文件夾結構如何,此類文件都會在樹中列出。在這種情況下,您需要將項目根目錄設置為包含兩個目錄的父目錄compile_commands.json 和項目文件。
要更改項目根目錄,請選擇“ 工具” |“工具”。編譯數(shù)據(jù)庫| 從主菜單更改“項目根目錄 ”,并為項目根目錄提供其他位置。
自動導入并重新加載項目
為了使您的項目在每次更改時都自動重新加載 compile_command.json,在“設置” /“首選項” |“設置”中設置“ 使用自動導入”復選框。 構建,執(zhí)行,部署| 編譯數(shù)據(jù)庫。如果取消選中此復選框,則在對編譯數(shù)據(jù)庫文件進行任何修改后,都會顯示一條彈出消息,提示您導入更改:
您也可以使用“ 工具” | “ 重新加載編譯數(shù)據(jù)庫項目”操作。編譯數(shù)據(jù)庫菜單可在需要時手動刷新項目。
編譯一個文件
盡管CLion尚未實現(xiàn)用于編譯數(shù)據(jù)庫項目的構建功能,但是您可能會發(fā)現(xiàn)在不構建整個項目的情況下檢查單個文件中的更改很有用。為此,CLion提供了“重新編譯”操作。它可用于單個源文件和頭文件,也可用于項目樹中選擇的文件組。對于標題,CLion使用resolve上下文來編譯包含指定標題的源文件之一。請注意,目錄和非C / C ++文件均禁用了重新編譯。
要為當前打開的文件調用“重新編譯 ”,請選擇“ 生成” |“新建”。從主菜單重新編譯(或按Ctrl+Shift+F9)。對于項目樹中的文件,請使用右鍵單擊菜單中的“重新編譯”選項(或按相同的Ctrl+Shift+F9鍵)。要重新編譯幾個文件,請在項目樹中選擇它們,然后使用右鍵菜單中的Recompile selected files選項Ctrl+Shift+F9。請注意,當用于多個文件時,重新編譯將在第一次編譯失敗時停止。
重新編譯文件時,CLion從對應的命令對象中提取必要的信息compile_commands.json:編譯命令行(但CLion會抑制輸出并刪除指定輸出文件的標志),以及要使用的編譯器。
將目錄標記為。
“ 標記目錄為”操作也可用于您的編譯數(shù)據(jù)庫項目。在項目工具窗口中選擇一個目錄,右鍵單擊它,然后選擇將目錄標記為操作。有關用例的描述以及有關CLion如何處理已標記目錄的更多詳細信息,請參閱“ 控制源,庫和排除目錄”部分。
構建并運行
編譯數(shù)據(jù)庫本身缺少構建,運行和調試應用程序所需的數(shù)據(jù)。但是,可以通過為編譯數(shù)據(jù)庫項目添加自定義構建目標并為這些目標創(chuàng)建自定義運行/調試配置來設置工作流程。
=====================================================
更多關于CLion的教程、資源敬請關注我們即將推出的后續(xù)教程哦~
想要購買Clion正版授權的朋友歡迎。
JetBrain技術交流群現(xiàn)已開通,QQ搜索群號“786598704”或者掃描下方二維碼即可加入
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: