148 votes

Vérifier si un programme existe à partir d'un Makefile

Comment puis-je vérifier si un programme est appelable depuis un Makefile ?

(C'est-à-dire que le programme doit exister dans le chemin ou être appelable d'une autre manière).

Il pourrait être utilisé pour vérifier quel compilateur est installé, par exemple.

Par exemple, quelque chose comme cette question mais sans supposer que le shell sous-jacent est compatible POSIX.

2voto

user Points 1825

La vérification des solutions pour STDERR sortie de --version ne fonctionne pas pour les programmes qui impriment leur version dans le fichier STDOUT au lieu de STDERR . Au lieu de vérifier leur sortie vers STDERR o STDOUT vérifiez le code de retour du programme. Si le programme n'existe pas, son code de sortie sera toujours non nul.

#!/usr/bin/make -f
# https://stackoverflow.com/questions/7123241/makefile-as-an-executable-script-with-shebang
ECHOCMD:=/bin/echo -e
SHELL := /bin/bash

RESULT := $(shell python --version >/dev/null 2>&1 || (echo "Your command failed with $$?"))

ifeq (,${RESULT})
    EXISTS := true
else
    EXISTS := false
endif

all:
    echo EXISTS: ${EXISTS}
    echo RESULT: ${RESULT}

1voto

Prof. Falken Points 10242

Résolu par la compilation d'un petit programme spécial dans un autre makefile cible, dont le seul but est de vérifier les trucs d'exécution que je recherchais.

Ensuite, j'ai appelé ce programme dans une autre cible makefile.

C'était quelque chose comme ça si je me souviens bien :

real: checker real.c
    cc -o real real.c `./checker`

checker: checker.c
    cc -o checker checker.c

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X