конкатенация косой черты в make-файле не работает - PullRequest
0 голосов
/ 07 ноября 2019

Я использовал трюк $\ для объединения строк в make-файле без добавления пробелов (например, если бы я это сделал:)

$(info  TEST: 1$\
              2) 

Я бы получил ожидаемый результат

TEST: 12

без пробела между 1 и 2. Я, кажется, наткнулся на угловой случай, который не действует, как я ожидаю, однако. Если у меня есть следующее:

$(info TEST: [$(or \
              ,$\
              )])

, я получаю следующее:

TEST: [$]

Предыдущий пример показывает, что \ имеет приоритет над $, поэтому должен разрешить до $(or ,), которое должно быть пустым. Это ошибка в make или есть объяснение этому поведению? (Я использую gnu make 4.2.1).

------ EDIT -------

Я только что проверил, что это не происходит в make 3.81, итаким образом, считая это ошибкой. Я отправил письмо сопровождающим. Оставьте этот вопрос открытым, если кто-то столкнется с той же проблемой

----- Новое редактирование -----

Хорошо, обновите - похоже, $(or) автоматически удаляетвсе параметры. Вероятно, в этом суть проблемы - $(or , $ ,) будет отбрасывать каждый параметр перед разрешением $<space> ... поэтому у него будет второй параметр $ (без пробелов), который разрешается до ... $,Оооо ... Теперь возникает вопрос, считается ли это правильным поведением или это ошибка?

...