428 字
2 分钟
C++ 开发指南
2025-03-25

环境配置#

Visual Studio Code

msys2

  • 打开 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

CMake

编译第一个程序#

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})

详细编译步骤:

  1. 在项目根目录使用 cmake -S . -B build -G "MinGW Makefiles"
    • -S 设置源代码目录,即 CMakeLists.txt 所在目录
    • -B 设置构建目录
    • -G 设置Makefile的生成器
  2. 在构建目录使用 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

C++ 开发指南
https://fuwari.vercel.app/posts/编程/cpp/cpp-开发指南/
作者
Asuwee
发布于
2025-03-25
许可协议
CC BY-NC-SA 4.0