/cpp-catch2-demo

The Catch2 demo help to test your c++ code.

Primary LanguageCMake

cpp-catch2-demo

The Catch2 demo help to test your c++ code.

C/C++ 開發工具與環境配置

  • OS : Windows10 ver.20H2
  • IDE : VSCode
  • C/C++ Tools : Mingw-w64、Cmake、vcpkg、MSBuild

Windows 環境變數配置

PATH ICON
D:\mingw64\bin\
D:\CMake\bin\
D:\vcpkg\
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\ MSBuild

MinGW-w64

MinGW-w64 是一個完整的 gcc runtime,用於支持 Windows 64 位和 32 位操作系統的原生二進製文件。

由於個人所用的電腦系統為Windows,所以我採用 MinGW-W64 GCC-8.1.0 [x86_64-posix-seh]

經過本人測試確定可以使用於 win10-20H2

vcpkg 為 C/C++函式庫(libraries)管理工具。

下載安裝vcpkg

可以透過git clone或是.zip檔載解壓縮即可!

git clone https://github.com/Microsoft/vcpkg.git

首次啟動必須先到下載好的vcpkg目錄下,執行.\vcpkg\bootstrap-vcpkg.bat 有新增好路徑,就可以使用vcpkg指令了。

  • VCPKG_DEFAULT_TRIPLET 使用上,可設置環境變數 VCPKG_DEFAULT_TRIPLET 其值設置為 x64-windows,能避免Vcpkg下載到32-bit版本的包
VCPKG_DEFAULT_TRIPLET=x64-windows

VSCode

由於本次demo將採用vscode並配合vcpkg來使用,

若想使用經由vcpkg下載的C/C++函式庫,仍需要對vscode進行以下配置。

配置 vscode user settings

  • CMAKE_TOOLCHAIN_FILE 該變量為.cmake文件位置。 .cmake文件包含CMake工具鏈(toolchain)的配置訊息,為配合vcpkg使用必須指定為vcpkg.cmake

  • C_Cpp.default.includePath 該變量為C/C++函式庫所在位置。由vcpkg下載的c/c++庫,若其後綴為:x64-windows,則將被集中於vcpkg\installed\x64-windows\include\目錄下。

{
  "cmake.configureOnOpen": false,

  "cmake.configureSettings": {
    "CMAKE_TOOLCHAIN_FILE":"D:/vcpkg/scripts/buildsystems/vcpkg.cmake"
  },
  "C_Cpp.default.includePath": [
    "D:\\vcpkg\\installed\\x64-windows\\include"
  ]
}

CMake 可以生成跨平台通用的專案腳本CMakeLists.txt。原理上CMake根據CMakeLists.txt在當前平台才開始編譯,並產生對應當前平台的工具鏈,若為 Windows 64 位元的版本,至官網上擇一下載安裝即可。

Platform Files
Windows x64 installer cmake-3.23.1-windows-x86_64.msi
Windows x64 ZIP cmake-3.23.1-windows-x86_64.zip

CMake Vscode Extension

  • CMake
  • CMake Tools

CMake Generator

我們必須根據當前平台,來決定怎麼生成 CMakeLists.txt 文件,比較便捷確實的作法就是使用 CMake Generator,這裡我們使用 Visual Studio Tools 來構建。首先,先安裝下載。

CMake Scan

回到Vscode中,我們可以ctrl+p,若是新的專案,輸入CMake:Quick Start,把menu叫出來,透過上面的scan for kits,它會重新搜尋你擁有的generators。若發現你的面板新增出現你剛剛安裝的套件,代表成功!

CMake Build

ctrl+p,輸入CMake:Build

Catch2

Catch2 is mainly a unit testing framework for C++, but it also provides basic micro-benchmarking features, and simple BDD macros.

透過vcpkg下載Catch2

vcpkg install Catch2:x64-windows

添加以下代碼到 CMakeLists.txt


find_package(Catch2 CONFIG REQUIRED)
target_link_libraries(cpp-catch2-demo PRIVATE Catch2::Catch2)

add_custom_target(run
  COMMAND ${PROJECT_NAME}
  DEPENDS ${PROJECT_NAME}
  WORKING_DIRECTORY ${CMAKE_PROJECT_DIR}
)

運行 Catch2

因為沒有RUN的功能,所以就自己建一個。在 CMakeLists.txt 再添加如下代碼

add_custom_target(run
  COMMAND ${PROJECT_NAME}
  DEPENDS ${PROJECT_NAME}
  WORKING_DIRECTORY ${CMAKE_PROJECT_DIR}
)

在vscode輸入快捷鍵 ctrl + pcmake:build targetrun

另外一個做法便是透過下方的狀態列直接去執行。執行Build後,它會自動將服務的控制權轉移到新的Terminal,讓你可以去控制。