我正在尝试创建一个文件Makefile
来使用,make
以便可以更快地编译我的代码。我想要做的就是在终端中输入:
make dev myOutputName
它应该运行:
gcc -Wall -ansi -pedantic -O2 dev.c -o myOutputName
到目前为止我有以下内容Makefile
:
CFLAGS = -Wall -ansi -pedantic -O2 -Wno-unused-result
CC = gcc
%: %.c
$(CC) $(CFLAGS) $< -o $\dev
首先,上面的代码正确吗?我测试过了,可以编译,但是输出名称始终是dev
。
我怎样才能改变它以便我可以输入:
make dev myOutputName
它将运行:
gcc -Wall -ansi -pedantic -O2 dev.c -o myOutputName
答案1
您实际上不需要 Makefile,您可以使用 bash 函数。将其添加到您的~/.bashrc
文件中:
function mkdev(){
gcc -Wall -ansi -pedantic -O2 $1 -o $2
}
然后,source ~/.bashrc
(如果你不使用 bash,移植到其他 shell 也很容易)或者简单地打开一个新终端,你就可以用
mkdev dev myOutputName
在bash
、$1
、$2
、 ... 中,$N
是提供给程序或函数的参数。因此,上面的函数采用第一个参数并查找具有该名称和.c
扩展名的文件,第二个参数是输出名称。
答案2
make
不接受参数列表。它接受目标列表。不过,您可以从调用命令中设置变量
make O=myOutputName dev
在 Makefile 中:
%: %.c
gcc -Wall -ansi -pedantic -O2 $< -o $(O)