Создание Makefile - PullRequest
       21

Создание Makefile

2 голосов
/ 12 июля 2009

Как я могу сделать Makefile, потому что это лучший способ, когда вы распространяете программу по исходному коду. Помните, что это для программы на C ++, и я начинаю в мире разработки на C. Но возможно ли сделать Makefile для моих программ на Python?

Ответы [ 6 ]

11 голосов
/ 12 июля 2009

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

Хорошее место для начала - документация GNU Make .

Включает следующий обзор: «Утилита make автоматически определяет, какие части большой программы нужно перекомпилировать, и выдает команды для их перекомпиляции».

И первые три главы покрывают:

  1. Обзор марки
  2. Введение в Makefiles
  3. Написание Makefile
6 голосов
/ 12 июля 2009

Я использую Makefiles для некоторых проектов Python, но это очень сомнительно ... Я делаю что-то вроде:

SITE_ROOT=/var/www/apache/...

site_dist:
     cp -a assets/css build/$(SITE_ROOT)/css
     cp -a src/public/*.py build/$(SITE_ROOT)

и так далее. Makefile - это не что иное, как системы пакетного исполнения (причем довольно сложные). Вы можете использовать ваши обычные инструменты Python (для генерации .pyc и других) так же, как и GCC.

PY_COMPILE_TOOL=pycompiler

all: myfile.pyc
     cp myfile.pyc /usr/share/python/...wherever
myfile.pyc: <deps>
     $(PY_COMPILE_TOOL) myfile.py

Тогда

$ make all

И так далее. Просто относитесь к своим операциям как к любому другому. Ваш pycompiler может быть чем-то простым, например:

#!/usr/bin/python
import py_compile
py_compile.compile(file_var)

или какой-то вариант

$ python -mcompileall .

Это все то же самое. Makefiles - это не что-то особенное, это просто автоматическое выполнение и возможность проверки необходимости обновления файлов.

4 голосов
/ 12 июля 2009

Как я могу сделать MakeFile, потому что это лучший способ, когда вы распространяете программу по исходному коду

Это не так. Например, KDE использует CMake , а Веснот использует SCons . Я бы предложил одну из этих систем, они проще и мощнее, чем делают. CMake может генерировать make-файлы. : -)

4 голосов
/ 12 июля 2009

Простой Makefile обычно состоит из набора целей, его зависимостей и действий, выполняемых каждой целью:

all: output.out

output.out: dependency.o dependency2.o
    ld -o output.out dependency.o dependency2.o

dependency.o: dependency.c
    gcc -o dependency.o dependency.c

dependency2.o: dependency2.c
    gcc -o dependency2.o dependency2.c

Цель all (которая является первой в примере) и пытается построить свои зависимости в случае, если они не существуют или не обновлены. будет выполняться, если в команде make не указан целевой аргумент.

3 голосов
/ 12 июля 2009

Для программ на Python они обычно распространяются со скриптом setup.py, который использует distutils для сборки программного обеспечения. distutils имеет обширную документацию , которая должна быть хорошей отправной точкой.

1 голос
/ 12 июля 2009

Если вы спрашиваете о переносимой форме создания Make-файлов, вы можете посмотреть на http://www.cmake.org/cmake/project/about.html

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