VisualGDB系列8:使用VS創建CMake Linux項目


  根據VisualGDB官網(https://visualgdb.com)的幫助文檔大致翻譯而成。主要是作為個人學習記錄。有錯誤的地方,Robin歡迎大家指正。

 

 

         本文介紹如何使用VS來創建、構建、調試一個基於CMake的項目。當編輯該項目時,會使用高級CMake項目子系統來自動更新CMakeLists.txt文件。

         注意:開始本文如下步驟之前,確保所使用的VisualGDB為5.3或更新版本。

 

1 選擇Linux項目向導

         啟動VS並打開”New Project”對話框。”VisualGDB”下選擇”Linux Project Wizard”:

                       

 

2 選擇項目類型

         在”New Linux Project”頁面,”Create a new project”->”Application(executable file)”->”Use CMake”,並勾選”Use the advanced CMake Project Subsystem”復選框:

 

 

3 選擇Linux電腦

         在下一頁選擇你的目標Linux電腦並點擊”Next”。如果你之前沒有使用VisualGDB配置過到這台電腦的連接,參考《使用VS來開發Linux程序》來建立連接。

 

 

4 設置源碼訪問方式

         下一頁設定Linux機器如何訪問源碼。最簡單的方式是采用默認設置:將修改的源碼更新到Linux機器上。

 

         你也可以配置VisualGDB將源碼直接存儲在Linux機器上,並通過SSH方式訪問。具體參考《配置VS直接通過SSH方式訪問Linux項目》。

 

5 構建項目

         項目創建好后,點擊Ctrl+Shift+B來build你的solution:

 

 

6 斷點調試

         在main()函數中設置一個斷點,按F5確保項目能夠調試:

 

 

7 GUI方式管理項目target及修改各種配置

         接下來介紹如何使用GUI來管理項目targets及修改各種settings。

7.1 再創建一個可執行程序

         首先我們在創建一個可執行程序。Solution Explorer中,在”.vgdbcmake”節點上右鍵點擊,選擇”Add”->”New Item”,選擇”Executable”,並在location中添加子目錄”/subdir”:

 

         VisualGDB會自動創建”subdir”文件夾,並在該文件夾下創建一個CMakeLists.txt文件,然后使主程序的CMakeLists文件引用該CMakeLists.txt文件。

         然后將main.cpp文件的內存拷貝到新程序的文件中(只是需要替換hello信息),並構建該項目:

 

 

7.2 在新程序中再添加一個源文件

         在新項目AnotherExecutable中再添加一個源文件:

 

         在location中添加文件夾”subdir2”,並將新的源文件保存到該文件夾下:

 

 

7.3 配置屬性/參數

         在VisualGDB CMake Project中的每個CMake target都擁有各自獨立的properties set。

         調試相關的properties,比如命令行參數,都存到各自的項目文件中。

         構建(build)相關的properties,比如include目錄,將自動保存到CMakeLists.txt文件中。

         對於主應用程序,打開VS Project Properties,並設置命令行參數為非空值:

 

 

7.4 調試觀察

         在主程序上右鍵,選擇”Debug”->”Start”,啟動一個新的程序實例並開始調試它:

 

         現在可以觀察一下VisualGDB如何啟動選擇的目標,以及命令行參數如何匹配target settings所設置的參數:

 

 

8 對源文件和目標進行分組管理

         打開項目的VS Properties(通過節點.vgdbcmake),可以使用”Sorting/Grouping”下的配置來控制VisualGDB的分組策略。比如,設置”Group Source By Types”為”False”:

 

         設置后,可以看到”Source Files”節點消失了,然后所有的源文件顯示在目標節點下:

 

 

9 CMake如何處理子項目

         下面我們將展示CMake如何處理子項目。從子目錄下打開文件CMakeLists.txt並添加如下代碼:

project(subproj)

 

          保存CMakeLists文件后觀察Solution Explorer,可以看到兩個項目節點,每個項目都有一個聲明:

 

 

10 冗余目標過濾隱藏

         如果一個CMake項目包括其他項目,CMake將會兩次展示被包含項目(inner project,內部項目):一次是作為外部項目(including project/outer project)的部分,一次是作為內部項目(included project/inner project)的部分。

         這顯然很不方便,VisualGDB能夠自動隱藏冗余目標實例。可以使用VS settings中的”Hide Redundant Targets” settings來對.vgdbcmake項目進行控制過濾:

 

         如果選擇了”HideInnerProjectTargets”,所有的targets作為外部項目來展示(就像沒有內嵌的項目一樣)。

         如果選擇了” HideOuterProjectTargets”,VisualGDB將會顯示內部項目節點中的所有targets(targets inside the inner project nodes)。

 

11 構建時進行項目過期檢測

         和MSBuild項目不同的是,除非你要對項目進行構建(build),否則CMake項目不會自動檢測項目是否過期。所以,當你嘗試要調試一個項目時,將會彈出提示對該項目進行構建:

 

         如果想改變這種行為,需要打開”Rely on CMake up-to-date Check”,並重新加載該項目:

 

         請注意,上面這種機制並不是一直有效:CMake經常錯誤地判斷一些大型的項目過期了,而實際上它們並沒有過期。所有,要使用View->Output->VisualGDB CMake Output面板來觀察CMake的診斷輸出。

 

12 包含多目錄多目標的CMake項目的構建

         如果一個CMake項目在多個目錄下包含多個目標(targets),可以選擇性的構建選中的目錄。在目標節點上右鍵,然后選擇”Build Target”:

 

         注意,如果相同的目錄下包含多個targets,這個”Build Target”命令將會build該目錄下的所有targets。

 

13 如何編輯target properties

         下面介紹如何編輯目標的properties。選擇其中一個target,打開VS Project Properties,並設置Warning Level為Pedantic:

 

         然后觀察VisualGDB如何自動將target_compile_options聲明添加到對應的CMakeLists文件中:

 

 

14 如何為CMake項目設置全局settings

         最后介紹如何為VisualGDB CMake項目設置全局的settings。在項目節點上右鍵選擇”VisualGDB Project Properties”:

 

         在VisualGDB Project Properties窗口中,可以配置各種settings,比如Intellisense,static code analysis,debug/deployment settings:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM