【发布时间】:2021-08-24 14:17:45
【问题描述】:
我想对在 C 中编译和运行程序进行一些澄清。到目前为止,我主要使用单个 .c 文件,所以现在我尝试运行具有多个 .c 文件的程序。我在 Windows 上使用 gcc (mingw)。 假设在同一个程序文件夹中有:
-
file.c(函数定义) -
header.h(函数原型) main.c
在两个 .c 文件中,我都包含了带有 #include "header.h" 的标题。
在终端中,我尝试编译一些由多个 .c 文件组成的程序,如上所述:
gcc file.c main.c -o main
它创建了 main.exe 文件并且程序正确运行,但随后我尝试使用另一个具有相同“结构”的程序,我收到错误消息,表明找不到头文件。所以我在命令行末尾添加了带有-I 命令的标题路径,它再次运行良好。但我不知道为什么在这种情况下我需要指定标头路径。
在 VS 代码中,我修改了 task.json 文件以编译工作区 (${workspaceFolder}\\*.c) 中的所有 .c 文件,还添加了头文件路径 (-I${workspaceFolder}),它工作正常。所以task.json看起来像这样:(有一些意大利语短语,我正在使用安装在CodeBlocks文件夹中的gcc)。
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe compila il file attivo",
"command": "D:\\CodeBlocks\\MinGW\\bin\\gcc.exe",
"args": [
"-g",
"${workspaceFolder}\\*.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-I${workspaceFolder}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "compilatore: D:\\CodeBlocks\\MinGW\\bin\\gcc.exe"
}
]
}
基本上我想知道我这样做是否正确,或者是否有其他/更简单的方法可以做到这一点。
【问题讨论】:
-
使用构建工具:Make、CMake、MSBuild、Blaze、.....
标签: c json gcc visual-studio-code header