Mehrfach kompilieren / Variablen
-
Hallo Leute,
ich nutze Code::Blocks mit MinGW.
Ich habe eine Projektdatei, die mehrfach kompiliert werden muss - mit unterschiedlichem Namen.
Jeder Kompilierungsvorgang muss eine Variable innerhalb der Source-Files(int Variable) verändern.
Hat jemand einen Link oder irgendwo noch ein Beispiel solch einer Datei?
Ich glaube, dass es über Make-Files realisierbar ist. Allerdings habe ich noch nie wirklich mit ihnen gearbeitet.
Danke
-
zuckerlie schrieb:
Jeder Kompilierungsvorgang muss eine Variable innerhalb der Source-Files(int Variable) verändern.
Kannst du mal ein Beispiel geben?
-
Das Projekt arbeitet mit Sockets.
Um z.B. verbinden zu können muss der Member "sin_port" gesetzt werden.int portnummer; SOCKADDR_IN si; si.sin_port = htons(portnummer); //ich möchte die portnummer fest kompiliert haben, nicht über Benutzereingabe //oder sonstige Interaktion bestimmenIch weiß diese Portnummern im Vorhinein.
Da ich allerdings nicht immer wieder Stück für Stück kompilieren möchte und der Variablen Portnummer manuell einen Wert zuweisen will, möchte ich es nach dem Schema machen.Projektdatei: "NameXY".
Rauskommen soll das:
1. NameA portnummer = 60000
2. NameB portnummer = 60002
3. NameC portnummer = 60004
4. NameD portnummer = 60006
...
..
.D.h. dass ich durch einen Kompilierungsvorgang des Projekts NameXY, mehrere namentlich unterschiedliche Execuables erstelle und jeweils der Variable "portnummer" einen anderen Wert zuweise..
Verständlich? ^^
-
Makros?
-
Ja, auf die bin ich auch gestoßen.
Allerdings habe ich auch dort keine wirkliche Möglichkeit gefunden, wie ich es machen könnte. Ich muss anhand des Namens der Datei die Portnummer zuweisen.
__FILE__ z.B. gibt doch nicht den Namen der Executable zurück, sondern der includeten Source-Datei oder?!
Zudem muss sie eben mehrfach kompiliert werden. Auch da finde ich keine Möglichkeit über das Code::Blocks interface.
//edit:
Ein Makro könnte ich ja auch selber definieren, aber dann muss ich herausfinden wie die Datei heißt.
-
zuckerlie schrieb:
Ein Makro könnte ich ja auch selber definieren, aber dann muss ich herausfinden wie die Datei heißt.
Genau. Aber du weißt doch, wie die Datei heißt, sonst könntest du sie doch gar nicht dem Compiler vorwerfen. Und an der Stelle an der du die Datei dem Compiler vorwirfst bastelst du aus dem Namen noch ein "-DPORTNUMBER=port" und gibst dies auch an den Compiler weiter.
-
Ja, aber ich möchte ja, dass der Compiler aus 1 Projektdatei, mehrere Projekte mit unterschiedlichem Namen erstellt. Und dann - anhand des Namens - die Zuweisung der Portnummer.
Ich weiß prinzipiell wie man es macht. Aber habe keinen blassen Schimmer, wie ich anfangen soll bzw. wo.
//edit:
Ich habe 1 Projektdatei, die zu mehreren Executables kompiliert werden soll(mit unterschiedlichem Namen und anhand des Namens die Portnummer setzen).
Aber muss ja auch erstmal hinkriegen, wie ich das mit den mehreren Dateien hinkrieg ^^
-
Warum kannst du die Portnummer nicht einfach als Parameter übergeben und dann eben irgendwo ein Array mit den vordefinierten Portnummern machen!?
-
Weil ich nicht jedes mal die Portnummer übergeben möchte.
Sie soll einfach fest einkompiliert werden. Um das zu erklären, bräuchte es erstmal lange.Also wie kann ich denn mehrere Output-Files erstellen(Executables)?
-
zuckerlie schrieb:
Sie soll einfach fest einkompiliert werden.
Das wird sie in oben beschriebenem Ansatz doch!?
EDIT: Achso, du willst mehrere Executables erstellen? Wieso übergibst du die Portnummer dann nicht einfach per Makro, so wie von SeppJ schon vorgeschlagen!?
-
Vielen Dank erstmal

Nochmal
:Ich habe meine Projektdatei "XYName" unter Code::Blocks.
Nun möchte ich, dass aus dieser Projektdatei mehrere Executables erstellt werden.
Ich will nicht jede neu kompilieren, sondern mit einem Vorgang direkt z.B 10 Stück haben.Sprich:
Ich klick auf Release und finde im Ordner:XYName1.exe (dort ist portnummer = 60002)
XYName2.exe (dort ist portnummer = 60004)
XYName3.exe (dort ist portnummer = 60006)
XYName4.exe (dort ist portnummer = 60008)Makros weiß ich ja.
Aber ich brauch nen Ansatz, Beispiele oder sonstige Informationen...
Wird es über den MinGW realisiert?Muss ich eine eigene Makefile machen? Kann ich es einfach als zusätzliche Line an GCC übergebe?Blabla...Ich seh den Anfang, aber muss erstmal auf Startposition kommen ^^ und da find ich nicht hin...
-
Das ist doch Murks.
Man will doch eine Anwendung nicht zehnmal kompilieren nur weil sich irgendwo eine Portnummer ändert.Lös das doch bitte über irgendwelche Settingsdateien oder so.
Zur Not: EINMAL kompilieren und mit einem kleinen Script die Executable in zehn Ordner zusammen mit den individuellen Settingsdateien kopieren.
-
Hab ja in den Settings geguckt.

Aber hab doch noch ne Lösung gefunden, falls jemand interessiert ist:
http://wiki.codeblocks.org/index.php?title=Creating_a_new_project#Adding_a_new_build_target
Aber Danke!
-
zuckerlie schrieb:
Hab ja in den Settings geguckt.


Du sollst sowas wie ini-Dateien für Deine Anwendung verwenden, in denen der Port eingetragen ist.
Das was Du da machst ist ganz großer Müll.