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