2021年12月10日 星期五

建置 VScode 的 C++ 開發環境

 VScode 進化非常神速,就 C++ 而言搭配 CMake 延伸模組的支援,以往那些麻煩的設定可以拋諸腦後了。

首先到 CMake 下載並安裝最新版的 CMake。

再去抓最新版的 MinGW ,我抓的是 x86_64-posix-seh,解壓到 C:\x86_64-8.1.0-release-posix-seh-rt_v6-rev0,並將 C:\x86_64-8.1.0-release-posix-seh-rt_v6-rev0\mingw64\bin 設定到環境變數 PATH,這點是必須的,因 VScode 會去找編譯器。

一切就緒後就可以去抓最新版的 VScode 來安裝,安裝過程中出現下圖,就全選吧


▲[以 Code 開啟] 那兩項有選取往後會方便許多

並如下圖安裝必要的延伸模組


▲至少須安裝這四個延伸模組

接下來就測試一下成果,建一個空資料,在其中用滑鼠右鍵點選出選單,選擇 以 Code 開啟

▲現在可以看到方便性了

在 VScode 中,按 Ctrl-Shift-P 叫出命令選擇區下命令,如下圖選擇 CMake 快速入門


▲這個測試的第一道命令

接下來會出現要求編譯器選項,因我已經 Scan 過了,就直接選用,VScode 會到環境變數 PATH 設定的路徑中去 Scan


▲選擇編譯器

接下來是專案名稱


▲專案名稱

詢問是要製作 程式庫 還是 執行主程式


▲選擇製作執行主程式

然後就幫你製作了兩個檔案和一個 CMake 的 build 資料夾


▲簡簡單單就做出了測試程式

看看最下方會有一堆編譯、除錯、組態... 等等操作可用,自己試試


▲須要的操作在這裡

通過測試後就來做些正事,到這裡抓 CxxlMan2 程式庫來編譯看看,抓最新版和參考手冊參考手冊的首頁有編譯說明先看看,將抓下來的 CxxlMan2 壓縮檔解壓後,進到 Src 資料夾,用滑鼠右鍵點選出選單,選擇 以 Code 開啟


▲一樣以 Code 開啟

開啟後注意右下方會出現會出現下圖


▲按下 Yes

因 CxxlMan2 已經編寫好了 CMake 的 CMakeLists.txt,所以配置過程要比剛剛的練習簡單多了,等配置完成後,會如下圖多了一個 CMake 的 build 的資料夾


▲build 已配置完成

進到 build 資料夾,開啟 CMakeCache.txt 做 CMake 的設定,依 參考手冊 的說明有兩個地方要設定


▲設定 g++ 的語言標準參數


▲設定編譯完成後的安裝路徑

設定好存檔後,看看最下方


▲要用到的操作

  • (1) 用來選擇要編譯成 Debug 版本,還是 Release 版本
  • (3) 選擇要編譯哪個專案,其實可直接選 Install 這個專案,因相依性的機制,會先全部編譯完成再安裝。
  • (2) 按下就會進行編譯
Debug 版本和 Release 版本都須做一次,完成後就會被安裝到 C:\CxxlMan2,記得把 C:\CxxlMan2\lib 加入環境變數 PATH 中。

接下來寫個程式檢驗一下 CxxlMan2 程式庫安裝有沒有問題,回到剛開始的測試程式,打開 build\CMakeCache.txt 先做 CMake 的以下設定


▲在這設定 -std=c++17 -IC:/CxxlMan2/include


▲在這設定 -LC:/CxxlMan2/lib

接著打開 CMakeLists.txt 修改如下

cmake_minimum_required(VERSION 3.0.0)
project(FirstTest VERSION 0.1.0)

include(CTest)
enable_testing()

# 指定要加入的 CxxlMan2 程式庫
SET(LIBSRC_LIST optimized -lcxxlplugin optimized -lcxxlcontainer 
  optimized -lcxxlcommon optimized -lcxxlobject)
SET(LIBSRC_D_LIST debug -lcxxlplugin_d debug -lcxxlcontainer_d 
  debug -lcxxlcommon_d debug -lcxxlobject_d)

add_executable(FirstTest main.cpp)
# 加入 CxxlMan2 程式庫
target_link_libraries( FirstTest ${LIBSRC_D_LIST} 
  ${LIBSRC_LIST} )

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)


接下來打開 main.cpp 修改如下
#include <iostream>
#include <UTF8STRING.HPP>

int main(int argc, char** argv) 
{
  if(argc < 3)
  {
    std::cout << "須提供兩個命令參數" << std::endl;
    return -1;
  }
  CxxlMan2::UTF8_String arg1 = argv[1];
  CxxlMan2::UTF8_String arg2 = argv[2];
  CxxlMan2::UTF8_String str = arg1 + arg2;

  std::cout << str.c_str() << std::endl;
  return 0;
}

在最下方的工作列雖然有提供內定除錯操作,但我不知道要怎麼去設定程式執行時的命令參數,只好又回到傳統方法去設定 launch.json,打開最上方選單的 執行->新增組態


▲選第一項

選第一項後再選預設組態會自動幫忙建好 launch.json 樣版,再做一些修改


▲args 用來指定程式命令參數,自行修改

最下方會多了一項操作


▲多了一項自訂除錯

點選它並執行就可以了








沒有留言:

張貼留言