J'ai un programme C++ qui s'exécutera sur plusieurs machines utilisant un système de fichiers réseau. Pour chacune des bibliothèques C++ que mon programme utilise, j'ai installé une version pour chaque machine, sous ~/program_files/machinename/libraryname. "Nom_machine" est obtenu via la commande bash "nom_hôte"Makefile pour le programme exécuté sur différentes machines
Sur les machines que j'utilise, "hostname" sort quelque chose comme "io21.aaa.bbb.edu" et je prends seulement "io21" comme "machinename" pour le chemin vers les librairies. En bash, j'ai appris que
$ HOST =
hostname
# maintenant la valeur d'accueil est "io21.aaa.bbb.edu"$ HOST = $ {HOST %%. *} # Extrait " io21" de "io21.aaa.bbb.edu"
$ echo $ {HOST}
io21
Dans le Makefile de mon programme, je veux appeler ces commandes bash pour spécifier le chemin à la bibliothèque en fonction de la machine actuelle:
HOST: = $ (nom d'hôte shell)
HOST: = $ (shell $ {. HÔTE %% *})
LDFLAGS = -L $ {HOME}/program_files/$ {HOST}/libraryname/lib
CXXFLAGS = $ {-Wall -I HOME}/program_files/$ {HOST}/libraryname/include
La première ligne est travailler c'est-à-dire HOST est "io21. aaa.bbb.edu ", mais la deuxième ligne qui extrait" io21 "ne fonctionne pas et HOST est toujours" io21.aaa.bbb.edu ". Je me demande comment je devrais résoudre ce problème?
Merci pour votre intérêt!