如果之前已经提出这个问题,我很抱歉,我研究过并找不到合适的答案。
我有一个C ++项目,我必须使用make编译。
我想要的输出是使用一个make文件的三个不同的可执行文件,但我必须使用模式规则来编译它。
该项目由每个可执行文件的三个源文件组成,所有这些文件都使用我编译成目标文件的头文件中的函数。
我已设法将它们全部编译,但为每个文件使用单独的规则
一条规则的例子:
file1: file1.cpp header.o header.h
g++ $(FLAGS) file1.cpp header.o -o file1
感谢。
编辑:
file1: file1.cpp header.o header.h
g++ $(FLAGS) file1.cpp header.o -o file1
file2: file2.cpp header.o header.h
g++ $(FLAGS) file2.cpp header.o -o file2
file3: file3.cpp header.o header.h
g++ $(FLAGS) file3.cpp header.o -o file3
这些是可执行文件
header.o: header.cpp header.h
g++ $(FLAGS) -c header.cpp -o header.o
这是具有函数
的目标文件FLAGS变量包括存储头文件的目录。
答案 0 :(得分:1)
Make built-in rules用于编译和链接,您需要做的就是使用正确的变量和规则格式,以下内容应该有效
targets := file1 file2 file3
CPPFLAGS := -Isome_include_dir
.PHONY: all
all: $(targets)
$(targets): CC := $(CXX)
$(targets): %: %.o header.o
%.o: header.h