Seite 1 von 1

CMake statisch linken

Verfasst: 24.05.2012, 13:11
von Jonathan
Ich habe in meinem Projekt eine Bibliothek die ein paar Kernfunktionen implementiert. Dazu benutze ich ein paar Funktionen aus einer anderen Bibliothek. Will ich jetzt meine Bibliothek benutzen, muss ich überall auch die andere mitlinken.

Gibt es eine Möglichkeit, diese Abhängigkeit schon in meine Bibliothek reinzulinken? So dass diese Bibliothek schon all ihre Abhängigkeiten an Bord hat und quasi für sich alleine benutzt werden kann?

Re: CMake statisch linken

Verfasst: 24.05.2012, 13:55
von Artificial Mind
Der Befehl, den du suchst, heißt - so wie ich das sehe - TARGET_LINK_LIBRARIES.
Benutzung: TARGET_LINK_LIBRARIES(deinProjektName dieAbhängigkeiten)

Re: CMake statisch linken

Verfasst: 03.06.2012, 23:10
von Jonathan
Hm, ok: Ich habe jetzt also mein CMake Projekt, aufgeteilt in eine Anwendung und eine BIliothek. Die Bibliothek benutzt FreeImage. Wenn ich jetzt in CMake mit target_link_libraries FreeImage angeben, wird die in die Linkereingabe von meiner Anwendung aufgenommen. Dadurch linkt die Anwendung also FreeImage schonmal implizit, was ja nicht schonmal ok ist. Aber kann ich es auch so hinbekommen, dass nach dem kompilieren meiner Bibliothek die Anwendung die FreeImage.lib gar nicht mehr benötigt? Das würde nämlich nützlich, wenn ich mal nicht beides innerhalb eines großen CMake Projektes bauen würde. Das also, wenn ich meine Bibliothek kompiliere, die benötigten Teile von FreeImage darein gelinkt werden. Vermutlich wäre das Feld "zusätzliche Abhängigkeiten" unter "Bibliothekar" dann dafür verantwortlich, aber das bleibt leer, wenn ich das Projekt mit CMake generiere.

Re: CMake statisch linken

Verfasst: 05.06.2012, 15:45
von kimmi
Wenn du die Sourcen von FreeImage hast: die einfach mit in deinem Projekt mitbauen. Wenn nicht: ist die FreeImage-Lib statisch linkbar? Oder gibt es die nur als dll? Statische Libs kannst meines Wissens nach mit deiner eigenen exportieren, so dass andere Kunden, die deine Lib benutzen, durch diese ebenfalls die Binaries und Symbole der Third-Party-Libs mit bekommen. Allerdings kenne ich die Option nicht, mittels der das im VS und damit dann auch in CMake möglich ist.

Gruß Kimmi

Re: CMake statisch linken

Verfasst: 05.06.2012, 17:05
von Jonathan
kimmi hat geschrieben:Statische Libs kannst meines Wissens nach mit deiner eigenen exportieren, so dass andere Kunden, die deine Lib benutzen, durch diese ebenfalls die Binaries und Symbole der Third-Party-Libs mit bekommen.
Ja, genau das würd ich gerne machen. FreeImage ist im defaultbuild zwar eine dll, aber damit müsste das doch auch gehen. Dann benötigt meine Bibliothek eben auch diese dll, aber eben die Importbibliothek dieser dll nicht mehr.