Хеш внутри вызова оболочки Makefile вызывает непредвиденное поведение

Следующая команда печатает абсолютный путь к определенному заголовку C ++ в соответствии с тем, где, по мнению g ++, он находится.

echo \#include\<ham/hamsterdb.h\> | g++ -M -x c++-header - | grep hamsterdb.hpp | sed -e 's/-:  //' -e 's/ \\//'

В моей системе это выводит: /usr/local/include/ham/hamsterdb.hpp

Я столкнулся с проблемой при попытке запустить это внутри Makefile, чтобы установить переменную:

FILE=$(shell echo \#include\<ham/hamsterdb.h\> | g++ -M -x c++-header - | grep hamsterdb.hpp | sed -e 's/-:  //' -e 's/ \\//')

.PHONY spec

spec:
    @echo $(FILE)

Это выводит новую строку. Я думаю, что это символ решетки ('#'), который мешает make; если я перепишу строку FILE = ... следующим образом:

FILE=$(shell echo \#include\<ham/hamsterdb.h\>)

на выходе все равно будет ничего.

8
задан Anthony 29 January 2012 в 09:35
поделиться