Следующая команда печатает абсолютный путь к определенному заголовку 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\>)
, то на выходе все равно ничего не будет.