Bearbeiten Sie zuerst Ihre CMakeLists.txt, um Ihre Drittanbieterbibliothek einzuschließen. Sie benötigen zwei Dinge: den Pfad zu den Header-Dateien und die Bibliotheksdatei, zu der der Link führen soll. Zum Beispiel:
# searching for include directory
find_path(SIFTGPU_INCLUDE_DIR siftgpu.h)
# searching for library file
find_library(SIFTGPU_LIBRARY siftgpu)
if (SIFTGPU_INCLUDE_DIR AND SIFTGPU_LIBRARY)
# you may need that if further action in your CMakeLists.txt depends
# on detecting your library
set(SIFTGPU_FOUND TRUE)
# you may need that if you want to conditionally compile some parts
# of your code depending on library availability
add_definitions(-DHAVE_LIBSIFTGPU=1)
# those two, you really need
include_directories(${SIFTGPU_INCLUDE_DIR})
set(YOUR_LIBRARIES ${YOUR_LIBRARIES} ${SIFTGPU_LIBRARY})
endif()
Als Nächstes können Sie das gleiche für andere Bibliotheken tun, und wenn alle Bibliotheken gefunden werden, Link zum Ziel:
target_link_libraries(yourtarget ${YOUR_LIBRARIES})
Dann können Sie Ihr Projekt mit CMake konfigurieren, sondern als Es hat keine magische Möglichkeit, Ihre installierte Bibliothek zu finden, es wird nichts gefunden, aber es werden zwei Cache-Variablen erstellt: SIFTGPU_INCLUDE_DIR
und SIFTGPU_LIBRARY
.
Verwenden Sie die CMake GUI SIFTGPU_INCLUDE_DIR
zeigt auf das Verzeichnis, in die Header-Dateien und SIFTGPU_LIBRARY
auf die .lib
Datei Ihrer Dritten Bibliothek zu haben.
Wiederholen Sie für jede Bibliothek von Drittanbietern, erneut konfigurieren und kompilieren.
Wie teilt dies cmake, wo sich die .dll-Datei befindet? Ich sehe nur eine statische Verknüpfung zu einer Lib und einen Hinweis darauf, wo sich die Header-Datei befindet. – EbbnFlow
Cmake muss nicht wissen, wo DLL-Dateien sind. Diese Dateien werden nur benötigt, wenn die Binärdatei nicht beim Kompilieren ausgeführt wird. – Guillaume