我知道makefile用于文件相关的项目。但我想以不同的方式使用它。
因为我总是写很多测试文件,所以每次编译它时都需要输入一堆标志,这太麻烦了。我只想编写一个makefile,将所有源文件编译成可执行文件及其相应的名称 - 如a.c
到a
和b.c
到b
等等,这样我就可以了只需输入make而不是整个gcc来获取可执行文件......
有没有简单的方法呢?
答案 0 :(得分:1)
Make有一个内置的隐式规则,如下所示:
% : %.c
$(CC) -o $@ $(CFLAGS) $<
$(CFLAGS)将包含您的所有选项。
然后,做
make foo
会尝试从foo.c生成foo(如果它存在)。
为了能够一次编译所有这些,添加另一条规则:
all: $(patsubst %.c,%,$(wildcard *.c))
这个名为“all”的新规则将可执行文件列表作为先决条件。通配符函数列出目录中的所有.c文件,并且patsubst从每个文件中删除.c,留下将从每个.c文件生成的可执行文件列表。
这样做
make all
使它尝试将每个.c文件编译成相应的可执行文件。
答案 1 :(得分:0)
好吧明白了。我不太确定你是否理解语法。我会尽力解释。
你将创建一个名为Makefile的文件,没有扩展名。
DIR=$(HOME)/../"Your directory"
all: "Whatever driver you may have"
purify: purify g++ -o "Your file" -Wall -pedantic -g "objective file .o extension"
# Makes clean file
clean:
rm -f *.o "Drivers"
new:
make clean
make
答案 2 :(得分:0)
make
内置了隐含规则。只需输入make a
或make b
或make a b
或您想要的任何内容即可。如果要添加任何特殊选项,请添加和导出名为CFLAGS
的环境变量。