Eclipse GCC und Shared Library



  • Hi, ich bin privat nun auf Linux umgestiegen und habe mich schweren Herzens von Visual Studio getrennt. Leider komme ich mit dem ganzen Linux Krempl noch nicht ganz zurecht. Zuvor hatte ich mein Framework (DLL) allerdings noch unter Windows mit Eclipse und MinGW angepasst und erfolgrei compiliert damit dann unter Linux keine allzu großen Probleme mehr auftreten. Aber Pustekuchen. Unter Linux habe ich nun mit Eclipse ein neues Projekt (Shared Library) angelegt und meinen Source Folder über File -> New -> Folder -> Advanced -> Link to alternate Location (Linked Folder) hinzugefügt. Zusätzlich habe ich das Verzeichnis auch noch unter Properties -> C/C++ Gerneral -> Paths and Symbols -> GNU C++ -> Includes hinzugefügt. Mehr nicht. Denn ich würde erwarten dass er mir nun eine .so Datei kompiliert.

    Die GCC C++ Compiler Options schauen so aus:

    -std=c++0x -DNDEBUG -DUNICODE -D_UNICODE -I/media/username/MyHDD/Programming/Sources -O3 -Wall -c -fmessage-length=0
    

    Command Line Pattern:

    ${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}
    

    Wenn ich nun Project -> Build Project starte bekomme ich in der Console folgende Fehlermeldung:

    Nothing to build for project MyProject

    Scheinbar erwartet er eine main.cpp oder so etwas vermute ich. Aber ich habe doch extra Shared Library ausgewählt.
    Und das einzige was im Release Build Ordner zu finden ist ist eine Makefile, objects.mk, sources.mk sowie in jedem Unterverzeichnis eine subdir.mk. Der Inhalt dieser Dateien schaut für mich auch erstmal ganz vernünftig aus. Mal ein Beispiel:

    # Each subdirectory must supply rules for building sources it contributes
    MyProject/FileA.o: /media/username/MyHDD/Programming/Sources/FileA.cpp
    	@echo 'Building file: $<'
    	@echo 'Invoking: GCC C++ Compiler'
    	g++ -std=c++0x -DUNICODE -D_UNICODE -I/media/username/MyHDD/Programming/Sources -O3 -Wall -c -fmessage-length=0 -MMD -MP -MF"$(@:%.o=%.d)" -MT"$(@)" -o "$@" "$<"
    	@echo 'Finished building: $<'
    	@echo ' '
    

    Jemand eine Idee was mir noch fehlt? Bestimmt nur eine blöde Einstellung die noch fehlt. PS: Unter Linux habe ich jetzt nicht mehr den "MinGW" sondern direkt den "Linux GCC" Compiler verwendet.



  • Gibson schrieb:

    Hi, ich bin privat nun auf Linux umgestiegen und habe mich schweren Herzens von Visual Studio getrennt.

    Wieso benutzt du nicht Linux und Windoofs? Man muss doch nicht "umsteigen". Beide haben Stärken und Schwächen.



  • Ich muss gestehen ich war schon immer ein Microsoft Fanboy und habe mich über dieses Linux gefrickel lustig gemacht. Dass ich nun eines Tages selber mal auf Linux umsteigen würde konnte ich nicht ahnen :D. Bin auch alles andere als zufrieden mit Linux. Aber es hat sich die letzten Jahre viel zum besseren geändert. Wie wurde es groß beworben. Windows 10 ist das letzte Windows. Das kann ich nur unterstreichen. Windows 10 war mein letztes Windows. Vor allem aus Datenschutzgründen... Aber darüber möchte ich jetzt wirklich nicht in diesem Thread diskutieren. Ich würde gerne Eclipse ans laufen bringen. Ich werde aber natürlich auch weiterhin DLLs für Windows anbieten. Wäre blöd dies nicht zu tun :).



  • Ich habe auch mal anstatt das Sourcen Verzeichnis wie oben beschrieben zu verlinken die Sourcen über "File -> Import -> File System -> Advanced -> Create links in workspace" direkt ins Projekt importiert. Dann bekomme ich folgende Fehlermeldung:

    FolderXY/subdir.mk:39: recipe for target 'FolderXY/FileXY.o' failed
    

    Sprich ich müsste wohl alle Unterverzeichnisse als Include Verzeichnis hinzufügen. Und bei sowas bekomme ich einfach schon wieder einen halben Tobsuchtsanfall wer sich so eine Scheiße ausdenkt. Wieso findet er die Dateien nicht im Unterverzeichnis? Ich habe das Sourcen-Verzeichnis included und alle includes sind relativ zu diesem. Aber so ist halt Linux...

    Falls dennoch jemand eine Idee hat bitte melden.



  • Mit Eclipse hab ich auch schlechte Erfahrungen gemacht. Nimm doch eine IDE speziell für C++. Unter Linux gibt es z.B. Kdevelop und bestimmt noch viel mehr. Auch Netbeans geht. 🙂



  • Ich habe vor dem Wechsel zu Linux diverse IDEs ausprobiert. Und ich muss sagen dass es uner Linux keine einzige IDE gibt die mich ansprechen würde. Eclipse ist da das kleinste Übel. Ich weiß, total langsam, total undurchdacht usw. Das Workspace Konzept ist eine Qual. Wenn man z.B. ein neues Projekt anlegt und wählt zuerst den Linux GCC aus und erst anschließend die Art des Projektes springt er wieder auf dem Cross GCC was ich oft erst ein paar Dialoge später gemerkt habe. Oder wenn man mehrere Includes im Projekt hinzugefügt hat und möchte eines dieser Includes löschen, löscht es einfach mal alle anderen Includes gleich mit weg. Ist mir auch unbegreiflich wie man so einen undurchdachten Misst auf die Menschheit loslassen kann. Aber vielleicht bin ich auch der erste Mensch auf der Welt der Eclipse benutzt und ich sollte die Entwickler mal über meine Ehrfahrungen informieren. Den Hammer hatte aber Codelite abgeschossen. Zunächst war ich von der IDE sehr angetan. Optisch ansprechend und auf den ersten Blick sehr untuitiv zu bedienen. Leider hatte ich beim Importieren meiner Sourcen einen Fehler gemacht und wollte diese nun nochmals aus dem Projekt löschen. Codelite hat die Sourcen bei der Gelegenheit dann einfach ohne nachfrage komplett gelöscht. Nicht mal im Papierkorb waren diese noch vorhanden. War ein langer Tag Arbeit für den Mülleimer. Und dort ist dann auch Codelite gelandet. Leider sprechen mich deine genannten IDEs auch nicht an.



  • Um nochmal auf mein Problem zurück zukommen. Ich habe mal testweise ein neues Projekt (Shared Library) angelegt und dort ein paar Dummy Header angelegt. Auch in einem Unterverzeichnis. Das klappt wunderbar. Das Problem liegt wohl also darin, dass ich die Sourcen nur "verlinke".



  • Man kann auch unter Properties -> Resources -> Linked Resources eine zusätzliche Umgebungsvariable zu einem Pfad ausserhalb des workspaces definieren. Anschließend fügt man einen linked Folder mit dem Namen der Umgebungsvariable hinzu. Leider findet er aber auch so die Dateien im Unterverzeichnis nicht. Der Ordner taucht dann zwar auch unter "Includes" im Projekt View/Explorer auf. Klickt man hier allerdings auf eines der Unterverzeichnisse wird dort kein Inhalt angezeigt. Scheinbar kommt Eclipse/GCC nur mit Dateien auf der Hauptebene klar. Selbst wenn ich die Unterverzeichnisse als zusätzliche Includes (-I) im Projekt hinzufüge findet er die Dateien im Unterverzeichnis nicht. Google spuckt dazu auch einige Themen aus, aber eine Lösung habe ich leider bislang nicht gefunden.



  • Gibson schrieb:

    Ich habe vor dem Wechsel zu Linux diverse IDEs ausprobiert. Und ich muss sagen dass es uner Linux keine einzige IDE gibt die mich ansprechen würde. Eclipse ist da das kleinste Übel. Ich weiß, total langsam, total undurchdacht usw. Das Workspace Konzept ist eine Qual. Wenn man z.B. ein neues Projekt anlegt und wählt zuerst den Linux GCC aus und erst anschließend die Art des Projektes springt er wieder auf dem Cross GCC was ich oft erst ein paar Dialoge später gemerkt habe. Oder wenn man mehrere Includes im Projekt hinzugefügt hat und möchte eines dieser Includes löschen, löscht es einfach mal alle anderen Includes gleich mit weg. Ist mir auch unbegreiflich wie man so einen undurchdachten Misst auf die Menschheit loslassen kann. Aber vielleicht bin ich auch der erste Mensch auf der Welt der Eclipse benutzt und ich sollte die Entwickler mal über meine Ehrfahrungen informieren. Den Hammer hatte aber Codelite abgeschossen. Zunächst war ich von der IDE sehr angetan. Optisch ansprechend und auf den ersten Blick sehr untuitiv zu bedienen. Leider hatte ich beim Importieren meiner Sourcen einen Fehler gemacht und wollte diese nun nochmals aus dem Projekt löschen. Codelite hat die Sourcen bei der Gelegenheit dann einfach ohne nachfrage komplett gelöscht. Nicht mal im Papierkorb waren diese noch vorhanden. War ein langer Tag Arbeit für den Mülleimer. Und dort ist dann auch Codelite gelandet. Leider sprechen mich deine genannten IDEs auch nicht an.

    Tja, so isses mit den persönlichen Vorlieben. Ich bin da wesentlich toleranter und anspruchsloser. Wenn etwas nicht geht, weil ich zu doof bin, sehe ich das positiv. Aus Fehlern lernt man ja.

    Aber Eclipse hatte ich 2 oder 3 Mal in einen Zustand gebracht, der sich nur durch Neuinstallation reparieren ließ. Das war dann auch für mich zu viel. Ich kann jedem von Eclipse nur abraten.


Anmelden zum Antworten