2016-05-21 6 views
0

Unter GNU/Linux besteht die Konvention darin, den Namen der Bibliothek (nennen wir es foo) an target_link_libraries ohne das lib-Präfix zu übergeben (andernfalls versucht es liblibfoo zu verlinken) .damit). Unter Windows jedoch, wenn ich mit "foo" verlinke, versuche ich "foo.lib" zu finden, das nicht existiert, da die Bibliothek libfoo.lib heißt. Gibt es eine Möglichkeit, cmake anzuweisen, das lib-Präfix hinzuzufügen, ohne auf einen weiteren if (WIN32) -Block zurückzugreifen?cmake: wie man eine Bibliothek mit einem lib-Präfix verbindet unter Windows

Antwort

1

Verwenden Sie den Befehl find_library für den absoluten Suchpfad zur Bibliothek. Sie können alle möglichen Namen der gesuchten Bibliothek NAMES Option angeben:

find_library(FOO_LIBRARY NAMES foo libfoo) 

Dann Ergebnis dieses Befehls für Link verwenden, um mit der Bibliothek:

target_link_libraries(my_exec ${FOO_LIBRARY}) 
+0

Nein, ich spreche von Bibliotheken ohne Cmake Module. –

+0

Es sind keine CMake-Module beteiligt. Der Befehl 'find_library' ist intern für CMake, wie' target_link_libraries' selbst. – Tsyvarev

+0

Danke, ich missverstanden. Ich dachte, du hättest aus irgendeinem Grund find_package gesagt. Ich wusste nichts von find_library, die tatsächlich die Bibliothek findet. Allerdings mag ich es nicht, dass es es mit voller absoluter Pfad verbindet, also denke ich, ich bleibe bei der Bedingung für jetzt. –

Verwandte Themen