最近出于需求需要, 于是把 wxhelper 拉下来增加了一些功能再编译为 Dll。借用了同事的 Windows 电脑搭建了大半天环境, 又花了大半天解决编译问题。时隔近 10 年没碰 Microsoft Visual Studio, 当初还是大一用得比较多, 所以记录一下坑点, 也算是使用说明了。
环境准备
下载工具
- Visual Studio 2022
- cmake
- vcpkg
下载依赖
- vcpkg install mongoose
- vcpkg install nlohmann-json
开始编译
命令运行 cmake . 命令, 生成 Visual Studio 解决方案文件
命令是用于在当前目录下执行 CMake 构建系统的命令。CMake 是一个开源工具,用于管理跨平台的软件构建过程。它允许开发者在不同的操作系统和编译器上生成适当的构建配置,并生成相应的构建文件(如 Makefile 或 Visual Studio 解决方案)来编译项目。
当你在项目根目录运行 cmake . 命令时,CMake 会执行以下操作:
配置阶段: CMake 会读取项目根目录中的 CMakeLists.txt 文件,该文件描述了项目的结构、依赖关系、编译选项等。CMake 会分析这些信息并生成适当的构建文件。
生成构建文件: 根据配置阶段的分析结果,CMake 会生成适合所选编译器和操作系统的构建文件。这些文件可以是 Makefile、Visual Studio 解决方案文件、Ninja 构建文件等,具体取决于你的配置。
准备构建环境: 一旦构建文件生成完毕,你可以使用生成的构建系统来编译和构建项目。例如,如果生成了 Makefile 文件,你可以运行 make 命令来编译项目。
总之,cmake . 命令的作用是基于当前目录中的 CMakeLists.txt 文件生成适当的构建文件,为项目的编译和构建过程做准备。这使得开发者能够更轻松地管理跨平台的项目构建。注意,这只是使用 CMake 的一个简单示例,实际上 CMake 提供了丰富的配置选项和功能,以满足不同项目的需求。Visual Studio 中点击编译开始按钮
编译问题
[设置编译器版本] error C2039: “optional”: 不是 “std” 的成员
[配置头文件目录] fatal error C1083: 无法打开包括文件: “spdlog/spdlog-inl.h”: No such file or directory
[配置静态库目录] 链接器工具错误 LNK1104
如若不成功继续配置如下
[配置预编译宏]
[配置编译目标] 没有检查到程序入口
外部依赖设置为静态库
[配置运行环境] nonstandard extension used: ‘__asm‘ keyword not supported
如若不成功继续配置如下