目前,我有一个具有以下内容的makefile:
我要进行以下更改。
我知道该怎么做2) ...那部分没有给我带来任何麻烦。我担心的部分是1)。原因是该目标基本上必须<< claim >>更新任何所需的目标文件,而实际上,仅针对每个此类目标文件创建一个。update文件,而不是为目标文件本身创建。[我认为我可以欺骗GNU Make,使其通过相应地声明我的依赖关系(伪代码,不是有效的GNU Make代码段)来在构建所有目标文件之前不尝试尝试链接任何东西:
# Phony target that reads the *.update files created by the pattern rule target below and then
# compiles each object file for which an *.update file exists.
COMPILE_OBJECTS :
...
# Pattern rule target to take stock of all object files that need updating. Creates an *.update file for
# each object file that needs recompiling.
%.o : %.c :
...
$(EXE_FILE_TO_LINK) : $(LIST_OF_OBJECT_FILE_PATHS) COMPILE_OBJECTS
...
但是我仍然担心,这可能会导致不确定的行为,因为我的模式规则目标基本上是在欺骗GNU Make来更新所需的目标文件。我的担心合理吗?
[基本上,我想在GNU Make和编译器之间插入一个中间层,以使GNU Make不会分别编译每个目标文件。相反,编译将在单个Perl进程中完成,该进程可以访问需要编译的目标文件的完整列表,从而使我能够执行GNU Make直接控制编译无法实现的各种奇特的事情。
[目前,我有一个makefile,它具有:一个目标,该目标将一堆目标文件中的可执行映像文件链接在一起;一个模式规则目标,该目标规则目标编译了各个目标文件中的链接器目标...