我有一个 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”
$ 回声 ${主机}
io21
在我的程序的 Makefile 中,我想调用这些 bash 命令来根据当前机器指定库的路径:
HOST := $(shell 主机名)
主机 := $(shell ${HOST%%.*})
LDFLAGS=-L${HOME}/program_files/${HOST}/libraryname/lib
CXXFLAGS=-Wall -I${HOME}/program_files/${HOST}/libraryname/include
第一行有效,即 HOST 是“io21.aaa.bbb.edu”,但提取“io21”的第二行不起作用,HOST 仍然是“io21.aaa.bbb.edu”。
我想知道我应该如何解决这个问题?
谢谢并恭祝安康!