• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

G++ gtest linking

thecasio

deaktivierter Benutzer
Registriert
20.08.11
Beiträge
108
[close] G++ gtest linking

Hey,


ich hab wenig Hoffnung, dass hier mir wer Helfen kann. Momentan hab ich jemanden im Verdacht eine Voodoo-Puppe in Form meines Rechners zu haben und da sehr sehr viele Nadeln reingesteckt zu haben. :)


Ich arbeite unter Mac 10.8.2 an zwei Rechnern. Ein Air und einen Mini. Installiert ist g++ aus den MacPorts und auch der normale Apple g++ ist drauf. Ich brauche das Google Testframework in Version 1.6 welches ich von Hand installiert hab. Ich bin so vorgegangen wie ich es in meinem Blog beschrieben hab. Link


Jetzt kommt Voodoo ins Spiel. Wenn das Programm compiled gibt es keinen Fehler. Wenn jetzt der Testcase ausgeführt wird funktioniert das jedoch nur am Air, nicht am Mini. Es sind die EXAKT gleichen Dateien, das identische Makefile. Compiliert wird mit den Flags -lgtest und lgtest_main. Wird -lgtest_main weggelassen und in das Testcase die Mainmethode reingeschrieben die auch in der Lib steht funktioniert es. Wird -lgtest_main weggelassen und dafür die lgtest_main.a statisch angegeben, funktioniert es. Um das ganze noch interessanter zu machen: Eine Ausgabe der dynamischen Libs per
Code:
otool -L Test
bringt zu Tage, dass libgtest_main zwar gelinkt wurde, libgtest hingegen nicht. Eigentlich ist libgtest_main von libgtest abhängig was das ganze noch rätselhafter macht. Die Fehlermeldung beim ausführen des Testcases ist:
Code:
This test program did NOT call ::testing::InitGoogleTest before calling RUN_ALL_TESTS().  Please fix it.
Ein
Code:
update_dyld_shared_cache
wurde gemacht, es hat nichts gebracht. Die Version von Mac Ports zu installieren bringt nichts, das ist die alte 1.5er Version mit der bekomm ich beim compilen schon Probleme. Die Testmain in jede Testklasse einzufügen ist keine Option da ich das bisher schon so gemacht habe und es ziemlich nervig ist. Und unser Jenkins will die Flags -lgtest und -lgtest_main haben. Was mich einfach sehr sehr ratlos zurück lässt, dass irgendwie am Air alles gleich ist und es da allerdings funktioniert, da wird auch die libgtest.dylib mitgenommen.
Hat irgendwer eine Idee?

//Edit
In irgendeinem früheren Versuch gtest systemweit zur Verfügung zu stellen habe ich wohl libgtest.a und libgtest.la nach /usr/lib kopiert. Das hat sich wohl irgendwie mit den Dateien in /usr/local/lib gebissen. Problem also erledigt.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: below

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Danke, dass Du die Lösung angegeben hast!

Aber bitte schreib das bei einem so ausführlichen Post doch an den Anfang ;) Ich habe das [close] nicht verstanden

Gruss

Alex