gpt4 book ai didi

bash - 程序在不同机器上运行的Makefile

转载 作者:行者123 更新时间:2023-11-29 09:41:49 24 4
gpt4 key购买 nike

我有一个 C++ 程序,它将在多台使用网络文件系统的计算机上运行。对于我的程序使用的每个 C++ 库,我在 ~/program_files/machinename/libraryname 下为每台计算机安装了一个版本。

“machinename”是通过bash命令“hostname”获得的。在我使用的计算机上,“主机名”输出类似“io21.aaa.bbb.edu”的内​​容,并且我仅将“io21”作为库路径的“机器名”。在 bash 中,我了解到

$ HOST=hostname # now the value of HOST is "io21.aaa.bbb.edu"

$ HOST=${HOST%%.*} # extract "io21" from "io21.aaa.bbb.edu"

$ echo ${HOST}

io21

在我的程序的Makefile中,我想调用这些bash命令来根据当前机器指定库的路径:

HOST := $(shell hostname)

HOST := $(shell ${HOST%%.*})

LDFLAGS=-L${HOME}/program_files/${HOST}/libraryname/lib

CXXFLAGS=-Wall -I${HOME}/program_files/${HOST}/libraryname/include

第一行工作正常,即主机是“io21.aaa.bbb.edu”,但提取“io21”的第二行不起作用,主机仍然是“io21.aaa.bbb.edu”。

我想知道如何解决这个问题?

感谢和问候!

最佳答案

或者您可以使用

HOST := $(shell echo $(HOST) | cut -d . -f 1)

关于bash - 程序在不同机器上运行的Makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1303080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com