通用规则添加到目标的路径

时间:2019-03-21 14:01:35

标签: makefile

我想构建一个如下所示的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++  ...

请注意这行是不正确的,但希望传达我想要完成的工作。我希望能够自己创建目标而不用自己写出路径,而不必为每个程序写额外的行。我想问题的部分在于我不能仅将%用作目标。我该怎么解决?

1 个答案:

答案 0 :(得分:1)

您的问题似乎是尾随空白:

binfolder := bin    #<- notice trailing whitespace.
                    # bindfolder is actually "bin    "...

所以现在您的规则

$(bins):%: $(binfolder)/% 

扩展到:

program1 secondprogram thethirdprogram:%: bin    /%

这可能会导致您的问题。要检查这样的事情,您可以添加以下内容:

$(info binfolder is "$(binfolder)")