我想编译一个由几个.cpp文件组成的代码。我想用不同的标志编译每个文件(例如-fopenmp用于并行化)。第一个目标是将输出文件链接到通用可执行文件中。
例如
exec: $(OBJS)
$(CC) -I$(INCLDIR) -I$(INCLDIR) $(CFLAGS) -o exec $(OBJS) -L$(LIBPATH) $(LDFLAGS)
让我们假设在对象中包含了一些像这样的目标:
obj1.o: obj1.cpp $(INCLFILE)
$(CC) $(CFLAGS1) -c obj1.cpp -o obj1.o
obj2.o: obj2.cpp $(INCLFILE)
$(CC) $(CFLAGS2) -c obj2.cpp -o obj2.o
CFLAGS1或CFLAGS2为-fopenmp。即使我将CFLAGS1或CFLAGS2设置为等于-fopenmp但未将CFLAGS设置为等于-fopenmp,也会出现关于找不到相应文件的错误。当我将CFLAGS设置为等于-fopenmp时,问题就会消失。那么,在主可执行目标中,是否应该包含任何函数使用的所有标志?然后当然用于个别对象?