我有大约10个带有标头(.h)的源文件(.c)。只有两个源文件(.c)链接到可执行文件(ELF)中,并包含主要功能。大多数文件被编译为与可执行文件(.o)和(重新)使用(静态链接)的对象。
我试图定义一个通用规则来构建所有对象:
%.o : %.c $(CC) $(CCFLAGS) -c -o $@ $<
这对于编译成对象的源代码非常有用。每次添加新的源文件时,我都不必担心更新make文件。
但是我不知道为构建可执行文件创建规则的最佳方法是什么?
exec1 : object1.o object2.o object3.o call the linker exec2 : object1.o object2.o object4.o object5.o call the linker
这将起作用;但是,每当我包括一个新的标头(foo.h)时,我都还需要记住为此规则更新对象列表(添加foo.o)。
make有什么方法可以自动解析给定目标的必需对象(也许基于所包含的头文件吗?)?
有没有更好的方法来定义可执行文件的目标?
请注意,我不能使用通配符,因为并非所有可执行文件都需要所有对象。还是链接程序可以删除多余的对象?
谢谢!