2 Stimmen

Makefile erstellen

Wie kann ich ein Makefile erstellen, denn das ist der beste Weg, wenn man ein Programm per Quellcode verteilt. Bedenken Sie, dass dies für ein C++-Programm ist und ich in der Welt der C-Entwicklung anfange. Aber ist es möglich, ein Makefile für meine Python-Programme zu erstellen?

11voto

Andre Miller Punkte 14657

Aus Ihrer Frage klingt es so, als ob ein Tutorial oder ein Überblick darüber, was Makefiles eigentlich tun, für Sie von Nutzen sein könnte.

Eine gute Anlaufstelle ist die GNU Make Dokumentation.

Es enthält die folgende Übersicht: "Das Dienstprogramm make bestimmt automatisch, welche Teile eines großen Programms neu kompiliert werden müssen, und gibt Befehle aus, um sie neu zu kompilieren."

Und die ersten drei Kapitel umfassen:

  1. Überblick über die Marke
  2. Eine Einführung in Makefiles
  3. Makefiles schreiben

6voto

Aiden Bell Punkte 27753

Ich verwende Makefiles für einige Python-Projekte, aber das ist höchst zweifelhaft... Ich mache Dinge wie:

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

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

und so weiter. Makefile sind nichts anderes als Stapelverarbeitungssysteme (und zwar ziemlich komplexe). Sie können Ihre normalen Python-Werkzeuge (zum Erzeugen von .pyc und anderen) auf die gleiche Weise verwenden wie den GCC.

PY_COMPILE_TOOL=pycompiler

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

Dann

$ make all

Und so weiter. Behandeln Sie Ihre Operationen einfach wie jede andere. Ihr pycompiler könnte etwas Einfaches sein wie:

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

oder eine Variante von

$ python -mcompileall .

Es ist alles dasselbe. Makefiles sind nichts Besonderes, nur automatische Ausführungen und die Möglichkeit zu prüfen, ob Dateien aktualisiert werden müssen.

4voto

mmx Punkte 400975

Eine einfache Makefile besteht in der Regel aus einer Reihe von Zielen, ihren Abhängigkeiten und den von jedem Ziel durchgeführten Aktionen:

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

Das Ziel all (das im Beispiel das erste ist) und versucht, seine Abhängigkeiten zu bauen, falls sie nicht existieren oder nicht aktuell sind. wird ausgeführt, wenn kein Zielargument in der make Befehl.

4voto

Bastien Léonard Punkte 57728

Wie kann ich eine MakeFile erstellen, denn das ist der beste Weg, wenn man ein Programm über den Quellcode vertreibt

Das ist es nicht. Zum Beispiel verwendet KDE CMake und Wesnoth verwendet SCons . Ich würde stattdessen eines dieser Systeme vorschlagen, sie sind einfacher und leistungsfähiger als make. CMake kann Makefiles erzeugen :-)

3voto

Paul Fisher Punkte 9338

Bei Python-Programmen werden sie normalerweise mit einem setup.py Skript, das die distutils um die Software zu erstellen. distutils hat umfangreiche Dokumentation was ein guter Ausgangspunkt sein sollte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X