Makefile zum kompilieren eine Reihe von .cpp und .h in einer lib
Ich bin unter Windows 7 mit gcc/g++ unter Cygwin. Was wäre die Makefile-format (und Endung, ich denke, es ist .mk?) für die Zusammenstellung einer Reihe .cpp (C++ - Quelldatei) und .h (header -) Dateien in eine statische Bibliothek (.dll). Sagen wir ich habe eine variable Gruppe von Dateien:
- file1.cpp
-
Datei1.h
-
file2.cpp
-
Datei2.h
-
file3.cpp
-
datei3.h
-
....
Was wäre die makefile-format (und Endung) für das kompilieren diese in eine statische Bibliothek? (Ich bin sehr neu in makefiles), Was wäre der Schnellste Weg, dies zu tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Erweiterung wäre gar keine, und die Datei heißt
Makefile
wenn Sie möchten, GNU make, um es zu finden automatisch.Machen hat automatische Variablen, die allein Ihnen die Kontrolle über viel von den Bau-Prozess von C/C++ - Dateien. Zu diesen Variablen gehören
CC
,CPP
,CFLAGS
,CPPFLAGS
,CXX
,CXXFLAGS
, undLDFLAGS
. Diese Steuern die Schalter zu C/C++ - Präprozessor -, compiler-und Plattform-Objekt und Programm-linker (das Programm, das erzeugt, was ist bekannt als "ausführbare Datei" oder in plainspeak "das Programm, das Sie kompilieren").GNU make enthält auch eine Menge von impliziten Regeln, die maßgeschneidert sind, um zu ermöglichen das erstellen von Programmen, die von C/C++ - source-code, so dass Sie nicht haben, um zu schreiben, diese von Grund auf neu.
Beispielsweise auch ohne ein makefile, wenn Sie versuchen
make foobar
GNU Make wird versuchen, den ersten zu bauenfoobar.o
ausfoobar.c
oderfoobar.cpp
wenn es feststellt, dass entweder, durch aufrufen der entsprechenden compiler, und dann versuchen zu bauenfoobar
durch die Montage (inkl. Verlinkung) seine Teile aus system-Bibliotheken und -foobar.o
. In kurzen, GNU-Make weiß, wie man diefoobar
Programm auch ohne ein makefile vorhanden ist-Dank der impliziten Regeln. Sie finden diese Vorschriften unter Berufung auf mit der-p
wechseln, z.B.make -p
.Manche Menschen verlassen sich auf GNU Make implizite Regel-Datenbank, schlank und kurze makefiles, in dem nur das auf Ihre spezifische Projekt angegeben ist, während einige Menschen können so weit gehen, deaktivieren, um die gesamte implizite Regel-Datenbank (mit
-r
Schalter) und haben die volle Kontrolle über den übersetzungsprozess, indem Sie angeben, alles von Grund auf neu. Ich werde nicht Kommentar auf die Gültigkeit oder die andere Strategie, aber seien Sie versichert, beide funktionieren bis zu einem gewissen Grad.Gibt es eine Menge von Optionen, die Sie festlegen können beim erstellen einer dll, aber hier ist ein basic-Befehl, den Sie verwenden könnten, wenn Sie es Taten, von der Befehlszeile aus:
Und hier ist ein makefile (in der Regel sogenannte
Makefile
) behandelt den gesamten build-Prozess:Nun bauen
mydll.dll
, geben Sie einfach "machen".Ein paar Notizen. Wenn Sie geben Sie einfach "machen" ohne Angabe der makefile oder das Ziel (das Ding gebaut werden), Machen wird versuchen, verwenden Sie die Standard-makefile ("GNUMakefile", "makefile" oder "Makefile") und den default-target (das erste im makefile, in diesem Fall
mydll.dll
).