用gns自动编译-ansi -pedantic -Wall开关

Jef*_* Ty 3 c linux gcc

我们需要以这种方式使用gcc编译C源代码:

gcc -ansi -pedantic -Wall program.c
Run Code Online (Sandbox Code Playgroud)

我想知道当我进入时我怎么能'自动化'这个呢?

gcc program.c
Run Code Online (Sandbox Code Playgroud)

它将使用3个开关自动编译.这可能吗?

Sco*_*les 9

您还可以使用make的隐式规则,这样就不必为每个程序编写makefile.如果您说make foo并且foo.c当前目录中存在文件,Make将自动调用编译器.为了标志添加到这个定义变量CFLAGS在您的环境,例如在bash添加export CFLAGS="-Wall -pedantic -ansi".bashrc.

如果您的程序依赖于多个文件,但是您必须创建一个makefile,但是对于C编译,只要其中一个具有与目标相同的基本名称,您就可以放弃列出依赖项.

例如,对于这个makefile:

# Makefile
foo:foo.o bar.o
Run Code Online (Sandbox Code Playgroud)

running make将执行命令

gcc $CFLAGS -c -o foo.o foo.c
gcc $CFLAGS -c -o bar.o bar.c
gcc -o foo foo.o bar.o
Run Code Online (Sandbox Code Playgroud)

无需添加任何规则.


Bri*_*ndy 8

要自动构建任意数量的构建步骤/复杂参数,您应该使用makefile.

一旦你有了一个makefile,你只需要输入: make

  • 当在环境中使用`export CFLAGS = ...`的隐式规则正好符合Jef Ty想要的时候,提议使用硬编码(和损坏的)Makefile.(参见Scott Wales的回答). (2认同)