先照着GitHub上vcpkg的官方教程安装vcpkg,再打开vscode, Ctrl + Shift + P 输入 setting.json 打开用户配置,加一条
Ctrl
Shift
P
setting.json
12345678910
"cmake.configureSettings": { /*指定vcpkg路径*/ "CMAKE_TOOLCHAIN_FILE": "{你的vcpkg安装路径}/scripts/buildsystems/vcpkg.cmake", /* 指定要使用的包版本,这个和编译器有关 如果你用的是MSVC就改成 `x64-windows` Clang不清楚,具体可以看vcpkg的文档 */ "VCPKG_TARGET_TRIPLET": "x64-mingw-static"}
(你一定装了CMake插件了吧
比如我不想让 cmake.configureSettings 同步就可以写
cmake.configureSettings
123
"settingsSync.ignoredSettings":{ "cmake.configureSettings" }
终端输入
vcpkg install SDL2:x64-mingw-static
前提是你设置了vcpkg的环境变量
这里可以根据你需要的配置写
装好之后vcpkg会提示CMake的配置
但是很可惜,光有这个是不能用的。正确的配置是
123456789
find_package(SDL2 CONFIG REQUIRED)target_link_libraries( ${PROJECT_NAME} PRIVATE ${SDL2_LIBRARIES} SDL2::SDL2main SDL2::SDL2)
这里需要显式引入SDL2的库。
spdlog的话直接用vcpkg给的配置就可以了。
如果你碰到什么线程之类的编译错误,需要装个posix的MinGW
之前用的官方的办法直接 include(sdl2-config.cmake) ,后面试了git子模块的办法和vcpkg两种办法引入了spdlog库,结果CMake和gcc编译没有任何报错,但是控制台都不能输出log
include(sdl2-config.cmake)
后来在互联网的一个小角落找到了vcpkg无法引入SDL2的解决办法,引入了之后莫名其妙解决了上面的问题。
也许这就是传说中的 Windows Magic 吧 (~ ̄▽ ̄)~
strings.h
直接跳转到对应的SDL2 #include <strings.h> 直接注释掉即可
#include <strings.h>
下面全部作废:
clangd找不到你编译器的库,这里需要手动告诉它。
在vscode的设置里面找到clangd,在Argument项目里面写上 --include-dir={你的mingw位置}/x86_64-w64-mingw32/include
--include-dir={你的mingw位置}/x86_64-w64-mingw32/include
鼠标放到Argument上面点出现的小齿轮可以设置这项是否同步
重启就修复了
p.s.讲讲这个问题解决的过程
最开始找到说要在 Fallback Flags 加 -I{路径}
-I{路径}
这个I试过小写l和大写I结果都不行
最后还是在官方文档找到了这一行
List of flags to remove from the compile command.
-I
--include-dir=
虽然看不懂,但是反正试试,结果成功了
还得看官方文档~