背景
用VS Code编译一个C语言编写的项目文件,这个项目除main文件外还有些被引用的C文件,如果不做相关配置的话,运行会报错:
即编译时找不到被引用的这些文件,从而报错。
解决办法
我是使用code-runner这个插件跑的,所以这里只写关于用这种方式运行代码的解决办法。
首先查看.vscode/ 配置文件夹下是否有settings.json
;
如果有则看是否有配置对象叫做code-runner.executorMap
(code-runner.executorMap用于配置不同编程语言的执行命令);
如果有则在其中添加一条设置:
"c": "cd $dir && g++ -o $fileNameWithoutExt *.c && $dir$fileNameWithoutExt"
这条命令的含义如下:
cd $dir
: 切换到当前文件所在的目录。其中$dir是表示当前文件所在的目录路径的变量g++ -o $fileNameWithoutExt *.c
:
g++
表示使用g++编译器进行编译。
-o $fileNameWithoutExt
表示指定输出文件的名称为当前文件名。例如,如果当前文件是main.c,则输出文件名为main。
*.c
表示编译当前目录下所有的 C 源文件。(这个是关键,之前会存在找不到引用的一个问题就是其他文件没有被编译)$dir$fileNameWithoutExt
:
运行生成的可执行文件。$dir
表示文件所在目录,$fileNameWithoutExt
是不包含扩展名的文件名。
配置保存后,再运行则没有未定义引用的报错了。
如果没有settings.json
文件或者code-runner.executorMap
字段,可以这样:
在插件栏里,找到code-runner,点击齿轮,进入设置页面:
找到这一段,点击
如果之前没有settings.json
文件的话这时会生成,并自动添加code-runner.executorMap
字段,然后如上文所述添加命令即可。
参考
- https://blog.csdn.net/weixin_43870522/article/details/105736474
- https://blog.csdn.net/PegasiTIO/article/details/89225352