ネットワーク ファイル システムを使用する複数のマシンで実行する C++ プログラムがあります。私のプログラムが使用する C++ ライブラリごとに、各マシン用のバージョンを ~/program_files/machinename/libraryname の下にインストールしました。
「マシン名」は bash コマンド「ホスト名」で取得します。私が使用しているマシンでは、「ホスト名」は「io21.aaa.bbb.edu」のようなものを出力し、ライブラリへのパスの「マシン名」として「io21」のみを使用します。bashで、私はそれを学びました
$ HOST=
hostname
# HOST の値は "io21.aaa.bbb.edu" になりました$ HOST=${HOST%%.*} # 「io21.aaa.bbb.edu」から「io21」を抽出
$ echo ${HOST}
io21
プログラムの Makefile で、これらの bash コマンドを呼び出して、現在のマシンに応じてライブラリへのパスを指定したいと考えています。
HOST := $(シェルのホスト名)
ホスト := $(シェル ${HOST%%.*})
LDFLAGS=-L${HOME}/program_files/${HOST}/libraryname/lib
CXXFLAGS=-Wall -I${HOME}/program_files/${HOST}/libraryname/include
最初の行は機能しています。つまり、HOST は "io21.aaa.bbb.edu" ですが、"io21" を抽出する 2 行目は機能せず、HOST は "io21.aaa.bbb.edu" のままです。
この問題をどのように解決すればよいのでしょうか。
よろしくお願いします!