J'écris un Makefile qui doit trouver le répertoire d'un programme installé, qui se trouve dans PATH
; ou c'est-à-dire, est supposé être en PATH
. Par exemple: si le binaire est /opt/Xilinx/12.1/ISE_DS/ISE/bin/lin64/xst
, le chemin que je cherche est /opt/Xilinx/12.1/ISE_DS/ISE
. Le programme pourrait également être trouvé comme /home/markus/Xilinx/10.1/ISE/bin/lin64/xst
par exemple. Xilinx a inclus la partie ISE_DS
du chemin uniquement dans les versions ultérieures.Couper une chaîne après apparition d'une sous-chaîne dans un Makefile
En fait, la sous-chaîne /bin/lin64/xst
ne peut pas être simplement supprimée, car elle peut aussi être /bin/lin/xst
en fonction de votre installation. Le Makefile pourrait faire quelque chose comme XILINX_PATH = $(shell which xst)
et ensuite traiter cette chaîne selon l'exemple ci-dessus, mais je ne peux pas comprendre comment le faire de manière propre.
Le mieux que je pouvais trouver est la suivante:
XILINX_PATH_1 = $(shell which xst)
XILINX_PATH_2 = $(subst /bin/lin64/xst,,${XILINX_PATH_1})
XILINX_PATH = $(subst /bin/lin/xst,,${XILINX_PATH_2})
est-il une meilleure solution?
Génial! Je vous remercie. Cela semble tellement mieux. –