我在做基本相同的事情(即在带有 C 文件的 Windows 上使用 MinGW GCC)。对于我希望将其 .c/.h 文件包含在编译中的每个目录,我使用 -g 选项。
例如,如果我想编译 myFolder 目录中的所有内容,这对我有用:
gcc -g c:\myFolder\*.c -o foo.exe
请注意,您可以在命令行上多次使用 -g 选项来包含多个目录。例如,我将我的 .c/.h 文件组织到 myFolder 内的各种子文件夹中。所以要告诉 gcc 关于 myFolder 中的 mySubdir,我就是这样做的:
gcc -g c:\myFolder\*.c -g c:\myFolder\mySubdir\*.c -o foo.exe
请注意,对于我放在此类子目录中的任何 .h 文件,我需要从父目录中的 C 文件中引用这些文件,我必须使用 #include 中的相对路径。
例如,要从 myFolder 中的 C 文件引用 myFolder/subDir 中的 foo.h,我做:
#include "mySubdir/foo.h"
基本上就是这样。
现在,为了完整起见,如果您碰巧像我一样在我的 C 工作中使用 VSCode(这不一定是最佳的,但没问题),那么您可以在 .vscode 中调整此设置/tasks.json,分别指定每个-g选项,例如:
"command": "C:\\msys64\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${fileDirname}/*.c",
"-g",
"${fileDirname}/mySubdir/*.c",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
(我的 GCC 版本是 10.3.0)