The Catch2 demo help to test your c++ code.
- OS : Windows10 ver.20H2
- IDE : VSCode
- C/C++ Tools : Mingw-w64、Cmake、vcpkg、MSBuild
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 是一個完整的 gcc runtime,用於支持 Windows 64 位和 32 位操作系統的原生二進製文件。
由於個人所用的電腦系統為Windows,所以我採用 MinGW-W64 GCC-8.1.0 [x86_64-posix-seh]
經過本人測試確定可以使用於 win10-20H2
vcpkg 為 C/C++函式庫(libraries)管理工具。
可以透過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
由於本次demo將採用vscode並配合vcpkg來使用,
若想使用經由vcpkg下載的C/C++函式庫,仍需要對vscode進行以下配置。
-
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
- CMake Tools
我們必須根據當前平台,來決定怎麼生成 CMakeLists.txt 文件,比較便捷確實的作法就是使用 CMake Generator,這裡我們使用 Visual Studio Tools 來構建。首先,先安裝下載。
回到Vscode中,我們可以ctrl+p
,若是新的專案,輸入CMake:Quick Start
,把menu
叫出來,透過上面的scan for kits
,它會重新搜尋你擁有的generators。若發現你的面板新增出現你剛剛安裝的套件,代表成功!
ctrl+p
,輸入CMake:Build
Catch2 is mainly a unit testing framework for C++, but it also provides basic micro-benchmarking features, and simple BDD macros.
vcpkg install Catch2:x64-windows
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}
)
因為沒有RUN的功能,所以就自己建一個。在 CMakeLists.txt 再添加如下代碼
add_custom_target(run
COMMAND ${PROJECT_NAME}
DEPENDS ${PROJECT_NAME}
WORKING_DIRECTORY ${CMAKE_PROJECT_DIR}
)
在vscode輸入快捷鍵 ctrl + p
;cmake:build target
;run
另外一個做法便是透過下方的狀態列直接去執行。執行Build後,它會自動將服務的控制權轉移到新的Terminal,讓你可以去控制。