我有以下hypthetical生成文件变量扩展:混乱在生成文件
all: SOURCE = $(wildcard src/*.cpp)
unity: SOURCE = $(wildcard unity/*.cpp)
OBJECTS = $(SOURCE:.cpp=.o)
all: prog
unity: prog
prog: $(OBJECTS)
$(CXX) $(OBJECTS) -o prog
我需要与基于初始目标不同的源文件/对象进行编译。在我看来,变量扩展在依赖关系上比在目标机构中发生得早得多,因为上面的编译器命令被称为正确的文件名,但prog依赖项中的$ OBJECTS仍然是空的,因此没有任何对象建成。
统一文件夹包含一个组合的源文件,其中包含所有其他源文件以进行统一构建。这个统一文件是由makefile生成的,但是这被遗漏了,实际上可能是多个统一目标文件。
我的设计是失败的原因吗?我将不得不求助于递归制作来实现这一点?
我很确定你想要的是不可能的,但是我已经生成了动态头依赖关系覆盖与make文件集成,并且从来没有想过这也是可能的。看一看[gnu make](http://www.gnu.org/software/make/manual/)文档。你不可能像你喜欢的那样扩展,但也许可以为你自己创建其他目标。它需要变得非常狡猾,但几乎任何事情都可能发生在make文件中。 – WhozCraig
关于“统一文件夹”的段落很不清楚。如果你澄清它,我敢打赌我们可以找到解决方案。 – Beta