VSCode 编写 C++ (.h,.cpp 文件分离)代码,编写完成后,编译遇到了编译错误 undefined reference to xxx。
开始还以为使用了 -std=c++20 而不能使用 #include “xxx.h" 方式头文件,但仔细一想虽然引入了 import,也不至于向前兼容都成了问题😊。
接着觉得可能是没有编译全部的 .cpp
文件,只编译了当前执行的 main.cpp
文件,导致找不到对应的类。试着 #include ”xxx.cpp",就解决了问题,但也不能这样改呀,是不。
这时问题已经明了了,在 tasks.json 文件里配置了单文件编译,问题就出在这里。修改tasks.json
文件中args
栏的 ${file}
为 ${fileDirname}\\*.cpp
。
至此,问题解决。
配置多 tasks,并设置快捷键:
{"version": "2.0.0","tasks": [{"type": "cppbuild","label": "GCC Compile Multi-Cpps","command": "C:\\CplusEnv\\mingw64\\bin\\g++.exe","args": ["-std=c++20","-fdiagnostics-color=always","-g",//"${file}", // 编译当前打开(编辑)的 .cpp 文件"${fileDirname}/*.cpp", // 编译当前打开的文件所在目录下的所有.cpp 文件"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "compiler: C:\\CplusEnv\\mingw64\\bin\\g++.exe"},{"type": "cppbuild","label": "GCC Compile Single-Cpp","command": "C:\\CplusEnv\\mingw64\\bin\\g++.exe","args": ["-std=c++20","-fdiagnostics-color=always","-g","${file}", // 编译当前打开(编辑)的 .cpp 文件//"${fileDirname}/*.cpp", // 编译当前打开的文件所在目录下的所有.cpp 文件"-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build",//"isDefault": true},"detail": "compiler: C:\\CplusEnv\\mingw64\\bin\\g++.exe"},]
}
配置快捷键:
// Place your key bindings in this file to override the defaults
[{"key": "ctrl+1", // 配置快捷键"command": "workbench.action.tasks.runTask", // runtask//"args": "GCC Compile Multi-Cpps" // task 的名称,对应定义的label,不定义更换,可以弹框选择对应的task},{"key": "ctrl+2","command": "workbench.action.tasks.runTask","args": "GCC Compile Single-Cpp"}
]
按 ctrl+1 后出现
按 ctrl+2 直接以单文件方式编译。
为什么只编译不运行呢?等待后续解决。