直接用 MSVC cl.exe 命令行编译(如 cl /EHsc /Fe:mytool.exe mytool.cpp)最快捷,适合一次性脚本;空 MSBuild 项目最稳且调试支持好;CMake 适合稍大工具并支持跨平台;避免无必要地做 DLL 或静态库。

直接用 MSVC 编译器命令行生成 .exe
不需要项目文件也能快速出工具,适合写一次性脚本类程序。打开 Developer Command Prompt for VS 2022(确保安装了“使用 C++ 的桌面开发”工作负载),然后执行:
-
cl /EHsc /nologo /Fe:mytool.exe mytool.cpp—— 最简编译命令,/EHsc启用异常处理,/Fe:指定输出名 - 如果用了第三方头文件(比如
json.hpp),加/I "path\to\headers" - 如果链接静态库(如
ws2_32.lib),在命令末尾追加ws2_32.lib
注意:cl.exe 默认只认当前目录和 Windows SDK 路径,#include <windows.h> 没问题,但 #include "utils.h" 必须用 /I 显式指定路径,否则报 fatal error C1083: Cannot open include file。
创建空的 MSBuild 控制台项目再删多余文件
这是最稳、IDE 支持最好的方式,尤其当你后续可能加调试、资源、多配置时。新建项目选 Empty Project(不是 Console App),然后手动添加 main.cpp —— 这样不会自动生成 stdafx.h 或预编译头逻辑,避免干扰。
- 右键项目 →
属性→Configuration Properties > General > Configuration Type设为Application (.exe) - 关掉预编译头:
C/C++ > Precompiled Headers > Precompiled Header设为Not Using Precompiled Headers - 若工具要调用 Win32 API,确认
General > Windows SDK Version和Platform Toolset(如v143)匹配,否则CreateWindowEx等函数会报unresolved external symbol
好处是:调试断点、堆栈跟踪、符号加载全部原生支持;缺点是项目文件(.vcxproj)略重,不适合纯脚本场景。
立即学习“C++免费学习笔记(深入)”;
组合式C++代码评审方案,融合静态分析、AI推理、多轮迭代评审和C++专项检查,适用于PR审查、增量代码审查、全项目评审和代码质量评分,触发词包括review cpp、cpp代码评审、C++review、代码审查。
用 CMake + Visual Studio 打开即用
适合稍大一点的工具,比如带子命令、配置文件解析、跨平台意图的程序。你只需要一个 CMakeLists.txt 和源码,VS 2022 可直接打开文件夹并自动识别。
-
CMakeLists.txt至少包含三行:cmake_minimum_required(VERSION 3.25)、project(mytool)、add_executable(mytool main.cpp) - VS 里用
File > Open > Folder打开该目录,底部状态栏会提示 “Configuring…”;完成后右键mytool→Build即可 - 若要用 vcpkg 库(如
fmt),在CMakeLists.txt加find_package(fmt CONFIG REQUIRED),并确保 vcpkg 已通过vcpkg integrate install注册到全局
关键点:CMake 生成的构建逻辑与 VS UI 解耦,修改 CMakeLists.txt 后需点击右下角 “Generate Cache” 才生效;不推荐在 CMake 项目里手动改 .vcxproj 属性,会被覆盖。
避免把工具做成 DLL 或静态库再包装
除非你明确需要被其他进程 LoadLibrary 调用,否则别主动做 DLL 工具。常见陷阱包括:
- 导出函数必须用
__declspec(dllexport),且 C++ 名字修饰(name mangling)会让调用端很难绑定 - 静态库(
.lib)不能直接运行,还得另写一个main()去链接它,徒增一层间接 - VS 默认生成的 DLL 项目会强制启用预编译头和 Unicode 入口(
DllMainW),对命令行工具毫无必要
真正轻量的工具程序,就该是单个 .exe,双击能跑、拖进去就能用——所有复杂度都该藏在代码里,而不是构建流程里。

















