Общее правило добавления пути к цели - PullRequest
1 голос
/ 21 марта 2019

Я хочу создать 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 Ответ

1 голос
/ 21 марта 2019

Похоже, что ваша проблема с конечным пробелом:

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

Так что теперь ваше правило

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

расширяется до:

program1 secondprogram thethirdprogram:%: bin    /%

, что, вероятно, вызывает вашу проблему. Чтобы проверить наличие таких вещей, вы можете добавить следующее:

$(info binfolder is "$(binfolder)")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...