c++多文件编译问题
1. 使用vscode调试工具解决
在.vscode
目录下创建task.json
,输入以下内容:
注意:将原始args
中的${file}
更改为${fileDirname}/*.cc
,表示编译目录下的所有cc文件。
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${fileDirname}/*.cc",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "dedicated", //任务间不共享面板, 同一个任务共享相同面板.
"showReuseMessage": false, //控制是否显示“终端将被任务重用, 按任意键关闭”提示.
"clear": false
}, //如果这是你最后一部分内容,就把这个逗号去掉。,
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
创建launch.json
文件,输入以下内容:
{
"version": "0.2.0",
"configurations": [
{
"name": "C/C++",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "gdb.exe",
"preLaunchTask": "compile",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
},
]
}
保存文件,然后启动调试工具即可。
2. 使用终端编译解决
我们可以在终端使用g++
编译命令来生成可执行文件,从而解决以上问题。
但是每次都要在终端中输入编译命令会变得繁琐,因此我们使用bash
脚本来解决问题。
touch main.sh
chmod 777 main.sh
./main.sh
在main.sh
中输入以下内容:
#!/bin/bash
g++ -o main *.cc && ./main
./clear_file.sh
其中,clear_file.sh
用于清除其他中间文件。
清除中间文件
使用vscode
调试工具调试c++
文件时,中间会产生不带后缀名的可执行文件和后缀名为.dSYM
的文件夹。
为了清除这些文件,我们可以使用以下脚本来进行中间文件的清除。
touch clear_file.sh
chmod 777 clear_file.sh
./clear_file.sh
在clear_file.sh
中输入以下内容:
find . -type f ! -name "*.*" -delete
find . -type d -name "*.dSYM" -exec rm -r {} +