428 字
2 分钟
C++ 开发指南
环境配置
- 打开 MSY2 UCRT64
- 安装 MinGW-w64 工具链
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
pacman -S make
- 安装完成后输入
gcc -v
,g++ -v
,gdb -v
查看环境配置情况 - 可以将
C:\msys64\ucrt64\bin\mingw32-make.exe
复制一份,重命名为make.exe
编译第一个程序
D:.└─workspace ├─src └─main.cpp └─CMakeLists.txt
main.cpp
#include <iostream>
using namespace std;
int main(void){ cout << "Hello World!" << endl;}
CMakeLists.txt
# CMake 最低版本需求cmake_minimum_required(VERSION 3.10)
# 项目名称project(hello_world)
# 指定编译器set(CMAKE_C_COMPILER "C:/msys64/ucrt64/bin/gcc.exe")set(CMAKE_CXX_COMPILER "C:/msys64/ucrt64/bin/g++.exe")
# 设置set(main src/main.cpp)
# 添加生成目标, 编译${main}源代码, 生成${PROJECT_NAME}.exe的可执行文件add_executable(${PROJECT_NAME} ${main})
详细编译步骤:
- 在项目根目录使用
cmake -S . -B build -G "MinGW Makefiles"
-S
设置源代码目录,即 CMakeLists.txt 所在目录-B
设置构建目录-G
设置Makefile的生成器
- 在构建目录使用
make
或者mingw32-make
- 调用gcc/g++编译链接生成可执行目标文件
CMakeLists.txt
设置 CMake 最低版本需求
cmake_minimum_required(VERSION 3.10)
设置项目名称
project(hello_word) # 后续可以通过 ${PROJECT_NAME} 进行索引
设置编译器
set(CMAKE_C_COMPILER "C:/msys64/ucrt64/bin/gcc.exe")set(CMAKE_CXX_COMPILER "C:/msys64/ucrt64/bin/g++.exe")
设置 CMake 标准方式
if(NOT CMAKE_C_STANDARD) set(CMAKE_C_STANDARD 99)endif()
if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 17)endif()
设置构建方式
SET(CMAKE_BUILD_TYPE "Debug")# SET(CMAKE_BUILD_TYPE "Release")SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -fPIC -Wall -g -ggdb -pie -fPIE -std=gnu++11")SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -fPIC -Wall -pie -fPIE -std=c++11")
新增头文件目录
include_directories(D:/env/VzNLSDK/Inc)
创建变量
set(main src/main.cpp)
生成可执行文件
add_executable(${PROJECT_NAME} ${main})
将可执行文件与所需要的依赖库进行链接
target_link_libraries(${PROJECT_NAME} D:/env/VzNLSDK/Windows/x64/Debug/VzNLDetect.lib D:/env/VzNLSDK/Windows/x64/Debug/VzNLGraphics.lib)
CMake
preset
在生成 Makefiles 需要设置一些参数,可以通过创建 CMakePresets.json 来避免重复输入,该文件需要和 CMakeLists.txt 位于相同目录下:
{ "version": 3, "cmakeMinimumRequired": { "major": 3, "minor": 10, "patch": 0 }, "configurePresets": [ { "name": "mingw", "displayName": "MinGW Makefiles", "description": "Configure for MinGW Makefiles", "generator": "MinGW Makefiles", "binaryDir": "${sourceDir}/build" } ]}
生成时使用指令 cmake --preset mingw