我想构建一个如下所示的Makefile:
binfolder := bin
objs := #...
bins := program1 secondprogram thethirdprogram
all: $(bins)
#does not work, how can I express this?
$(bins):%: $(binfolder)/%
$(binfolder)/%: $(objs) _mainobj_%.o
#g++ ...
请注意这行是不正确的,但希望传达我想要完成的工作。我希望能够自己创建目标而不用自己写出路径,而不必为每个程序写额外的行。我想问题的部分在于我不能仅将%用作目标。我该怎么解决?
答案 0 :(得分:1)
您的问题似乎是尾随空白:
binfolder := bin #<- notice trailing whitespace.
# bindfolder is actually "bin "...
所以现在您的规则
$(bins):%: $(binfolder)/%
扩展到:
program1 secondprogram thethirdprogram:%: bin /%
这可能会导致您的问题。要检查这样的事情,您可以添加以下内容:
$(info binfolder is "$(binfolder)")