Создание Makefile Python, который создает исполняемый файлер в той же папке - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь создать python make-файл для программы с именем python_program.py, которая создает исполняемый файл с именем "python_program". Я создал make-файл, который, когда make набирается в терминале ubuntu, запускается и выводит содержимое python_program.py. Однако он не создает исполняемый файл "python_program" в папке, где находятся make-файл и программа. Я не уверен, где и что я должен написать для создаваемого исполняемого файла. Может кто-нибудь, пожалуйста, подскажите мне, почему мой код не создает этот исполняемый файл "python_program". У меня есть следующий код:

#!/usr/bin/env python
all: python_program.py
        chmod +x python_program.py
        ./python_program.py

Вот назначение:

Используйте файл python_program.py, чтобы создать исполняемый файл с именем python_program. Предположим, что ваш Python Makefile находится в том же каталоге, что и python_program.py, и поэтому, когда вы запускаете make в этом каталоге, ваш Python Makefile создаст исполняемый файл python_program. Ваш Python Makefile должен воссоздать python_program, когда python_program.py изменится. Есть несколько способов подойти к этому (так как компилировать нечего). Например, вы можете воспользоваться функциональностью shebang, которая позволяет выполнять файл, который можно интерпретировать. Для этого требуется, чтобы файл был исполняемым (chmod +x filename).

1 Ответ

1 голос
/ 20 января 2020

Вы действительно не хотите или не нуждаетесь в Makefile для этого. На Unix любой текстовый файл, содержащий код на интерпретируемом языке, может быть скриптом. Шебанг должен быть самой первой строкой самого файла скрипта, а затем файл должен быть выполнен исполняемым с chmod, как вы уже знаете.

Дальнейшее редактирование файла обычно сохраняет эти черты ( очевидно, не связывайтесь со строкой shebang во время редактирования), поэтому их нужно добавлять только один раз.

Распространенная ошибка новичка - редактирование файла на Windows, что может сохранить файл в неправильной кодировке.

В любом случае, вот простой Makefile, который удовлетворяет вашим требованиям:

python_program: python_program.py
    python ./$< >$@
    chmod +x $@

Вот тот, который явно добавляет шебанг в новый файл:

python_program: python_program.py
    printf '#!/usr/bin/env python\n' >$@
    python ./$< >>$@
    chmod +x $@

Оба они предполагают, что python_program.py печатает свой собственный источник на стандартный вывод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...