2009-06-18 9 views
8

Wir haben ein Programm, das separat ausgeführt wird, mit einem Execvp-Befehl ausgeführt. Es braucht also eine Hauptmethode, aber ich glaube, dass dies ein Problem darstellt, wenn man mit einer verwalteten Marke in den Schatten tritt. Müssen wir diesen Code in ein separates Projekt aufteilen, oder gibt es eine Möglichkeit, ihn in dasselbe Projekt zu integrieren?So erstellen Sie zwei Hauptnetzwerke in einem Eclipse-C++ - Projekt

Antwort

1

Wenn das aufgerufene Makefile die 2 main() -Methoden nicht in dieselbe ausführbare Datei kompiliert, verursacht dies kein Problem. Ich weiß nicht, wie Eclipse-Projekte gehandhabt werden - wenn es wie VS ist, wobei "Projekt" eine einzelne ausführbare Datei oder Bibliothek bedeutet und "Lösung" eine Gruppe von "Projekten", dann scheint es, als würden Sie mehr als eine benötigen Projekt. Wenn OTOH, ein "Projekt", verschiedene "Teilprojekte" enthalten kann, in denen ein "Teilprojekt" eine ausführbare Datei oder Bibliothek ist, sollten Sie in der Lage sein, dies leicht zu handhaben.

3

Behalten Sie es im selben Projekt und verwenden Sie Präprozessor Defines, die Sie unterschiedlich definieren, abhängig davon, welche Art von Main Sie in das aktuelle Projekt aufnehmen möchten. Hier befinden sich die Hauptleitungen in der gleichen Datei, aber sie können sich natürlich in verschiedenen Dateien befinden.

#if defined(MAIN_ONE) 
int main() 
{ 
    // Do stuff 
} 
#elif defined(MAIN_TWO) 
int main() 
{ 
    // Do some other stuff 
} 
#endif 
1

Ich bin nicht bekannt, dass einfache Möglichkeit, zwei Netzsystem mit Eclipse bauen zu bauen. Die kleinste Änderung, die Sie vornehmen müssen, könnte darin bestehen, zu Makefiles zu wechseln und Makefile-Targets zu erstellen.

Stattdessen rate ich Ihnen, zu CMake zu wechseln. CMake kann verwendet werden, um Makefiles zu generieren, die mit Eclipse verwendet werden. Der Vorteil von CMake besteht darin, dass Sie einfach angeben können, wie Sie die Bibliotheken erstellen und die Bibliotheken zu den ausführbaren Dateien verknüpfen. CMake kann Builds für Eclipse, Visual Studio, Codebausteine ​​oder Makefiles generieren (damit Sie die Eingabeaufforderung verwenden können).

7

Erstellen Sie ein Projekt für jede ausführbare Datei mit einer main() -Funktion, und erstellen Sie ein zusätzliches Projekt, um die Software als Ganzes darzustellen (ein "Container" -Projekt der Art). Mit Eclipse können Sie Projekte als Abhängigkeiten anderer Projekte angeben. In diesem Fall sollten Sie das Containerprojekt so einrichten, dass die anderen Projekte als "Referenzierte Projekte" aufgeführt werden.

Dazu erstellen Sie das Containerprojekt, klicken Sie dann mit der rechten Maustaste auf das Projekt in der linken Spalte (Projektexplorer) und klicken Sie auf "Eigenschaften". Ein Dialogfeld wird angezeigt. Wählen Sie den Punkt "Projektreferenzen" in der Liste auf der linken Seite und Sie sehen eine Liste aller Projekte, mit denen Eclipse gerade arbeitet. Aktivieren Sie die Kontrollkästchen neben den Projekten für Ihre einzelnen ausführbaren Dateien und klicken Sie dann auf OK. Wenn Sie nun ein Build für das Containerprojekt erstellen, sollte Eclipse automatisch auch diese abhängigen Projekte erstellen.

Bei der Verwendung von Unterprojekten auf diese Art habe ich es (persönlich) als nützlich empfunden, einen Arbeitssatz zu erstellen, der das Containerprojekt und alle Unterprojekte enthält (dies kann die Suche im gesamten Softwareprojekt erleichtern).

+0

Wie verhindern Sie, dass sich das Containerprojekt darüber beschwert, dass es keine "alle" oder "sauberen" Ziele gibt? Zweitens, wie legen Sie die Reihenfolge fest, in der die Teilprojekte erstellt werden? (Im Moment enthält meine Projektgruppe ein Projekt, das eine Bibliothek erstellt, auf die alle anderen Projekte angewiesen sind, aber die Bibliothek wird nicht zuerst gebaut (die Launen der Namensgebung), was bedeutet, dass ich das Containerprojekt zweimal erstellen muss) – Urhixidur

+0

@Urhixidur - Sie müssten die Bibliothek als eine Abhängigkeit der Programme markieren, die sie verwenden, aber ich kann mich nicht daran erinnern, wie Sie das in der Eclipse-Benutzeroberfläche tun können. Es ist jedoch ziemlich einfach, wenn Sie Ihre eigenen Makefiles schreiben. Für die erste Frage definiere einfach die make-Ziele (auch wenn sie gar nichts machen). – bta

0

Dies ist in der Sprache C++ erstellt. Sie müssten es ändern, um Ihr Ergebnis zu erhalten. Es gibt etwas zu tun 2 Dinge auf einmal wenn das ist, was Sie wollen.

Verwandte Themen