我正在尝试使用 cl.exe 和 vscode 任务编译 SDL2 程序。 出于某种原因,/I 标志被 cli 中的 cl.exe 完全忽略。 任务指定为:
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: cl.exe build active file",
"command": "cl.exe",
"args": [
"/Zi",
"/EHsc",
"/nologo",
"/Fe:",
"${workspaceFolder}\\build\\hello.exe",
"${workspaceFolder}\\src\\*.cpp",
"/I C:\\Users\\stackoverflow\\path\\to\\include\\folder\\include\\",
"/link C:\\Users\\stackoverflow\\path\\to\\include\\folder\\lib\\x86\\SDL2main.lib C:\\Users\\stackoverflow\\path\\to\\include\\folder\\lib\\x86\\SDL2.lib"
],
"problemMatcher": ["$msCompile"],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "Task generated by Debugger."
}
],
"version": "2.0.0"
}
出于某种原因,如果我在代码中指定整个路径,它只会找到头文件,例如:
#include <C:\Users\stackoverflow\path\to\include\folder\include\SDL2\SDL.h>
但它给出了致命错误 C1083:无法打开包含文件:<...> 没有这样的文件或目录 当我使用:
#include <SDL2\SDL.h>
官方文档表明它应该可以工作:docs
visual studio 使用开发者 cli 时出现同样问题。 我在这里错过了什么?
更新:
当我删除 /I like so 之前的空格时它会起作用:
"/IC:\\Users\\stackoverflow\\path\\to\\include\\folder\\include",
"/linkC:\\Users\\stackoverflow\\path\\to\\include\\folder\\lib\\x86\\SDL2main.lib C:\\Users\\stackoverflow\\path\\to\\include\\folder\\lib\\x86\\SDL2.lib"