Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

重拾 Visual Studio #63

Open
xiaoxiaojx opened this issue Aug 15, 2023 · 0 comments
Open

重拾 Visual Studio #63

xiaoxiaojx opened this issue Aug 15, 2023 · 0 comments
Labels
C++ C++

Comments

@xiaoxiaojx
Copy link
Owner

image

最近出于需求需要, 于是把 wxhelper 拉下来增加了一些功能再编译为 Dll。借用了同事的 Windows 电脑搭建了大半天环境, 又花了大半天解决编译问题。时隔近 10 年没碰 Microsoft Visual Studio, 当初还是大一用得比较多, 所以记录一下坑点, 也算是使用说明了。

环境准备

下载工具

  • Visual Studio 2022
  • cmake
  • vcpkg

下载依赖

  • vcpkg install mongoose
  • vcpkg install nlohmann-json

开始编译

  1. 命令运行 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 提供了丰富的配置选项和功能,以满足不同项目的需求。

  1. Visual Studio 中点击编译开始按钮

编译问题

[设置编译器版本] error C2039: "optional": 不是 "std" 的成员

image

[配置头文件目录] fatal error C1083: 无法打开包括文件: “spdlog/spdlog-inl.h”: No such file or directory

image

[配置静态库目录] 链接器工具错误 LNK1104

image
如若不成功继续配置如下
image

[配置预编译宏]

image

[配置编译目标] 没有检查到程序入口

image
外部依赖设置为静态库
image

[配置运行环境] nonstandard extension used: ‘__asm‘ keyword not supported

image
如若不成功继续配置如下
image

@xiaoxiaojx xiaoxiaojx added the C++ C++ label Aug 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C++ C++
Projects
None yet
Development

No branches or pull requests

1 participant