Bha*_*alp 5 c json makefile build visual-studio-code
我有一个用 C 编写的项目,它有两个 make 文件,一个在主目录中,一个在子目录中。我想使用 VS Code 任务来自动化 make 过程,这样我就不必每次想运行时都使用终端来制作项目。相反,我只想使用ctrl+shift+b,然后使用mpiexec.
我在项目主文件夹内的 .vscode 目录中创建了 tasks.json 文件。tasks.json 当前包含我基于本教程的以下代码。
{
"version": "2.0.0",
"command": "bash",
"tasks": [
{
"label": "Make Project",
"type": "shell",
"command": "cd ${workspaceFolder}",
"args": ["make"],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": "$msCompile"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我希望这make与在当前工作目录的位置输入终端相同。相反,这是终端的输出
{
"version": "2.0.0",
"command": "bash",
"tasks": [
{
"label": "Make Project",
"type": "shell",
"command": "cd ${workspaceFolder}",
"args": ["make"],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"problemMatcher": "$msCompile"
}
]
}
Run Code Online (Sandbox Code Playgroud)
请注意,make 文件位于 /home/git/project。我希望然后还在 /home/git/project/subfolder 中构建一个 make 文件。
为什么不是初始命令cd /home/git/project然后make工作?我是否需要使用跑步者将其拆分为几个不同的任务?我是使用 VS Code 的新手,因此非常感谢您的帮助。谢谢。
Bha*_*alp 10
我实施的解决方案如下:
{
"version": "2.0.0",
"tasks": [
{
"label": "msvc build",
"type": "shell",
"command": "",
"args": [
"make",
"--directory=${workspaceFolder};",
"make",
"--directory=${workspaceFolder}/subfolder"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal":"always"
},
"problemMatcher": "$msCompile"
}
]
}
Run Code Online (Sandbox Code Playgroud)
基于Reinier Torenbeek 的建议以及Microsoft 页面上的这篇文章。这里要注意的要点是,我没有向 shell 传递任何命令,而是只传递参数。
ctrl+shift+b现在,我只需在编辑器内按一下即可构建项目中的所有 makefile,因为group设置为build.
为什么初始命令 cd /home/git/project 然后 make 不起作用?
输出
Executing task: 'cd /home/git/project' make
Run Code Online (Sandbox Code Playgroud)
显示整个表达式cd /home/git/project被解释为单个命令名(包括空格,这是文件名中的有效字符),并作为make其参数。当您查看 json 配置的结构时,这是有意义的。由于不存在这样的命令,因此失败。
可能有多种方法可以使其发挥作用,选择--directory可能make是一个不错的方法。请参阅9.7 选项摘要。
| 归档时间: |
|
| 查看次数: |
3853 次 |
| 最近记录: |