У меня есть программа на C++, которая будет работать на нескольких машинах, использующих сетевую файловую систему. Для каждой библиотеки C++, которую использует моя программа, я установил версию для каждой машины в каталоге ~/program_files/machinename/libraryname.
имя машины получается с помощью имени хоста команды bash. На машинах, которые я использую, имя хоста выводит что-то вроде io21.aaa.bbb.edu, и я беру только io21 в качестве имени машины для пути к библиотекам. В bash я узнал, что
$ HOST=
hostname
# теперь значение HOST равно io21.aaa.bbb.edu$ HOST=${HOST%%.*} # извлечь io21 из io21.aaa.bbb.edu
$ эхо $ {ХОСТ}
io21
В Makefile моей программы я хочу вызвать эти команды bash, чтобы указать путь к библиотеке в соответствии с текущей машиной:
HOST := $(имя хоста оболочки)
ХОСТ := $(оболочка ${HOST%.*})
LDFLAGS=-L${HOME}/program_files/${HOST}/имя_библиотеки/lib
CXXFLAGS=-Wall -I${HOME}/program_files/${HOST}/libraryname/include
Первая строка работает, то есть HOST — это io21.aaa.bbb.edu, но вторая строка, которая извлекает io21, не работает, а HOST по-прежнему io21.aaa.bbb.edu.
Меня интересует, как мне решить эту проблему?
Спасибо и привет!