2017-04-04 3 views
0

Ich versuche mit CMake etwas Einfaches zu erreichen, und ich stoße auf Probleme.CMake-Anwendung und DLL beide Verknüpfung zu derselben statischen Bibliothek?

Ich habe eine Anwendung, die mit einer DLL verknüpfen muss, die selbst eine statische Bibliothek verknüpft. Jedes dieser Module befindet sich in einem eigenen Ordner mit einer eigenen CMakeLists.txt-Datei.

Ich verwende add_subdirectory(), um eine Projekthierarchie zu erstellen, so dass die DLL add_subdirectory() die statische lib (und Links zu Static) hinzufügt und die Anwendung add_subdirectory() verwendet, um das DLL-Projekt hinzuzufügen.

Jetzt ist das Problem, dass der CMake im endgültigen Projekt die App sowohl zur DLL als auch zur statischen Bibliothek verbindet, obwohl ich explizit in der Datei CMakeLists.txt nur die Verknüpfung zur DLL anfordere. Offensichtlich möchte ich nicht, dass die App mit Static verknüpft, wenn die DLL bereits funktioniert.

Ich vermute, es hat etwas mit add_subdirectory() zu tun, aber ich sehe nicht, wie das zu beheben ist. Kann mir bitte jemand sagen, was ich falsch mache?

Antwort

0

Standardmäßig wird die Verknüpfung der "library1" mit der "library2" an alle Benutzer von "library1" (z. B. eine Anwendung) weitergegeben. Dies geschieht immer dann, wenn "library2" SHARED oder STATIC ist.

Für supress Verknüpfung Ausbreitungs Verwendung PRIVATE Verknüpfung:

target_link_libraries(library1 PRIVATE library2) 
+0

Thank you! Ich werde es ausprobieren und Ihre Antwort akzeptieren, sobald ich vergewissere, dass es funktioniert. (Afk jetzt) ​​ – bitwise

+0

Perfekt! Genau das habe ich gebraucht. – bitwise

Verwandte Themen