MinGW GCC通配符编译所有文件(Windows)

MinGW GCC wildcard to compile all files (Windows)

本文关键字:文件 Windows GCC 通配符 编译 MinGW      更新时间:2023-10-16

我在Windows上使用MinGW GCC编译器, 我需要编译文件夹中的所有 c 文件!

我试过了

gcc  *.c -o  Output {folder Path}

我收到此错误

gcc: error: *.c: Invalid argument 
gcc: fatal error: no input files

然后编译终止。

GCC 的使用版本是 4.7.1

gcc 不接受通配符 (*.c) 作为输入文件。

您可以编写一个脚本(batch@windows 或 .sh @Linux/Unix)来查找所有源文件并逐个编译它们。

但是您应该使用makefile或CMAKE来组织源代码及其构建系统。 请阅读此处

我正在做基本上相同的事情(即在带有C文件的Windows上使用MinGW GCC)。我对每个目录使用-g选项,我希望将其 .c/.h文件包含在编译中。

例如,如果我想编译myFolder目录中的所有内容,这对我有用:

gcc -g c:myFolder*.c -o foo.exe

注意:您可以在命令行上多次使用-g选项来包含多个目录。例如,我将.c/.h文件整理到myFolder中的各种子文件夹中。所以要告诉gcc关于myFolder中的mySubdir,这就是我所做的:

gcc -g c:myFolder*.c -g c:myFoldermySubdir*.c -o foo.exe

请注意,对于我放在需要从父目录中的 C 文件引用的此类子目录中的任何.h文件,我必须使用#include中的相对路径。

例如,要从位于 myFolder中的 C 文件中引用位于myFolder/subDir中的foo.h,我这样做:

#include "mySubdir/foo.h"

基本上就是这样。

现在,为了完整起见,如果您碰巧像我一样使用 VSCode 进行 C 工作(这不一定是最佳的,但还可以),那么您可以在 .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)