vscode CMake vcpkg 配置SDL2和spdlog踩的亿些坑
vscode CMake vcpkg 配置SDL2和spdlog踩的亿些坑
配置过程,讲讲Windows,Linux就方便多了用系统的包管理器直接装就行
vcpkg
先照着GitHub上vcpkg的官方教程安装vcpkg,再打开vscode,Ctrl
+ Shift
+ P
输入 setting.json
打开用户配置,加一条
1 |
|
(你一定装了CMake插件了吧
vscode小技巧
比如我不想让
cmake.configureSettings
同步就可以写
1
2
3
"settingsSync.ignoredSettings":{
"cmake.configureSettings"
}
装SDL2
终端输入
vcpkg install SDL2:x64-mingw-static
前提是你设置了vcpkg的环境变量
这里可以根据你需要的配置写
装好之后vcpkg会提示CMake的配置
但是很可惜,光有这个是不能用的。正确的配置是
1 |
|
这里需要显式引入SDL2的库。
spdlog的话直接用vcpkg给的配置就可以了。
p.s.
如果你碰到什么线程之类的编译错误,需要装个posix的MinGW
之前用的官方的办法直接
include(sdl2-config.cmake)
,后面试了git子模块的办法和vcpkg两种办法引入了spdlog库,结果CMake和gcc编译没有任何报错,但是控制台都不能输出log后来在互联网的一个小角落找到了vcpkg无法引入SDL2的解决办法,引入了之后莫名其妙解决了上面的问题。
也许这就是传说中的 Windows Magic 吧 (~ ̄▽ ̄)~
如果你用clangd作为vscode的lsp(老色批)Windows下就可能会发现提示找不到 strings.h
直接跳转到对应的SDL2 #include <strings.h>
直接注释掉即可
下面全部作废:
clangd找不到你编译器的库,这里需要手动告诉它。
在vscode的设置里面找到clangd,在Argument项目里面写上 --include-dir={你的mingw位置}/x86_64-w64-mingw32/include
鼠标放到Argument上面点出现的小齿轮可以设置这项是否同步
重启就修复了
p.s.讲讲这个问题解决的过程
最开始找到说要在 Fallback Flags 加
-I{路径}
这个I试过小写l和大写I结果都不行
最后还是在官方文档找到了这一行
List of flags to remove from the compile command.
- If the value is a recognized clang flag (like
-I
) then it will be removed along with any arguments. Synonyms like--include-dir=
will also be removed.虽然看不懂,但是反正试试,结果成功了
还得看官方文档~