3 votes

Exécuter un python script à partir du makefile et retourner la sortie du python script à une variable dans le makefile.

Il est très bien possible d'exécuter un script python à partir d'une règle embarquée à l'intérieur d'une cible dans le makefile (afin de faire un post-traitement sur la sortie des composants mkaefile). Mais est-il possible de renvoyer certaines valeurs du script python vers le makefile et de l'assigner à une certaine varibale à l'intérieur du makefile.

J'ai donc pensé que cela pouvait être fait de deux façons : Le procédé 1 : 1. Appeler le python script à partir du makefile. 2. Permettre à python script de stocker la sortie dans un fichier connu. 3. Lire la valeur du makefile et l'assigner à une variable à l'intérieur de celui-ci

J'ai essayé cette approche et j'ai pu faire l'étape 1 et l'étape 2 mais je n'ai pas pu faire l'étape 3.

Processus 2 : 1. Appeler le python script à partir du makefile. 2. Laisser le python script retourner une valeur qui sera assignée à une variable dans le makefile.

Je n'ai pas pu l'essayer car je n'ai pas trouvé d'exemples pour le faire.

----------------- makefile----------------
help:  detect_term_type

file := term_type
TERM_TYPE := $(cat ${file})

detect_term_type:
    python configure_things.py

-------configure_things.py-----
import platform

class TerminalType:

    def __init__(self):
        self.find_terminal_name()

    def find_terminal_name(self):
        f= open("term_type","w+")
        f.write(platform.system())
        f.write('\n')
        f.close()

Je souhaite attribuer la sortie de python script qui peut être 'Linux' ou 'Cygwin' à la variable TERM_TYPE du makefile.

2voto

John Bollinger Points 16563

Il est tout à fait possible d'exécuter un script python à partir d'une règle embarquée à l'intérieur d'une cible dans le makefile (afin de faire un post-traitement sur la sortie des composants de mkaefile). Mais est-il possible de retourner des valeurs à partir de python script vers le makefile et de l'assigner à une variable dans le makafile. dans le makefile.

Les spécifications POSIX pour make ne définissent aucune capacité qui pourrait servir cet objectif. Si vous vous appuyez spécifiquement sur GNU make Cependant, il a une $(shell) fonction qui sert le but :

TERM_TYPE := $(shell python figure_it_out.py)

Vous ne pouvez en aucun cas le faire en construisant un fichier puis en le relisant, car les variables obtiennent leurs valeurs avant que quoi que ce soit ne soit construit.

-1voto

Deepak Kumar Points 99

Utilisez ce qui suit dans une règle du makefile pour réassigner la valeur aux variables. Dans ce cas, TERM_TYPE est réassigné avec la valeur stockée dans le fichier 'term_type' (nom du fichier où python stocke la sortie).

run_python: 
    @python configure_things.py 

detect_term_type:run_python
    $(info xyz)
    $(eval TERM_TYPE=$(shell cat term_type|head -1))
    $(info $(TERM_TYPE))

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