Втеча в makefile


88

Я намагаюся зробити це в make-файлі, і це не вдається:

M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')

ти знаєш чому? Думаю, це пов’язано з втечею, але що і куди?


5
Як це не вдається? Які повідомлення про помилки видає? Що ви очікуєте від цього?

Відповіді:


164

Це знак долара, у make-файлах вам потрібно буде ввести $$один знак долара:

M_ARCH := $(shell g++ -dumpmachine | awk '{split($$1,a,"-");print a[1]}')

133
Так, заробляти - це повна трата грошей: вам потрібно поставити два, $щоб отримати один.
П Швед

8
@PavelShved Я жодного разу не платив за make. :)
Тревор Хікі

Кожен, хто знаходить цю відповідь як частину пошуку, також має проблеми із символами "#", які беруться за початок коментарів. Для них вам слід уникнути зворотної скісної риски: "\ #".
Джим Монте

16

Зробити досить неприємно, коли ви до нього дійдете. Ось не-awk версія, яка робить те саме:

space := $() #

M_ARCH := $(firstword $(subst -,$(space),$(shell g++ -dumpmachine)))

all:
    $(info $(M_ARCH))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.