Запустите скрипт python из makefile и верните вывод скрипта python в переменную внутри makefile - PullRequest
1 голос
/ 30 июня 2019

Очень хорошо можно запустить скрипт python из правила, встроенного в цель в make-файле (чтобы выполнить постобработку при выводе компонентов mkaefile). Но возможно ли вернуть некоторые вейлы из скрипта python обратно в make-файл и назначить их некоторому varibale внутри make-файла.

Так что я подумал, что это можно сделать двумя способами: Процесс 1: 1. Вызвать скрипт python из makefile 2. Разрешить скрипту Python сохранять выходные данные в некотором известном файле 3. Считайте значение из make-файла и назначьте его переменной внутри него

Я попробовал этот подход и смог выполнить Шаг 1 и Шаг 2, но не смог выполнить Шаг 3.

Процесс 2: 1. Вызвать скрипт python из makefile 2. Пусть скрипт python возвращает какое-то значение, которое присваивается переменной внутри make-файла

Я не мог попробовать, потому что я не мог найти примеры, чтобы сделать это

----------------- 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()

Я хочу назначить вывод скрипта python, который может быть 'Linux' или 'Cygwin', переменной makefile TERM_TYPE.

Ответы [ 2 ]

0 голосов
/ 30 июня 2019

Используйте следующее в правиле make-файла для повторного присвоения значения переменным. В этом случае TERM_TYPE переназначается со значением, хранящимся в файле 'term_type' (имя файла, в котором python хранит выходные данные).

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))
0 голосов
/ 30 июня 2019

Очень хорошо можно запустить скрипт python из правила, встроенного в цель в make-файле (чтобы выполнить постобработку при выводе компонентов mkaefile).Но возможно ли вернуть некоторые значения из скрипта python обратно в make-файл и назначить его некоторому варианту внутри файла makefile.

Спецификации POSIX для make не определяют никаких возможностей, которые могли бы служить этой цели.,Однако если вы полагаетесь конкретно на GNU make, у него есть функция $(shell), которая служит цели:

TERM_TYPE := $(shell python figure_it_out.py)

В любом случае вы не можете сделать это путем создания файла и последующего чтенияэто обратно, потому что переменные получают свои значения до того, как что-либо будет построено.

...