Innanzitutto, modifica il tuo CMakeLists.txt per includere la libreria di terze parti. Avrai bisogno di due cose: percorso dei file di intestazione e file di libreria a cui collegarti. Per esempio:
# 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()
Successivamente, è possibile fare lo stesso per le altre biblioteche e quando vengono rilevati ogni librerie, collegamento al bersaglio:
target_link_libraries(yourtarget ${YOUR_LIBRARIES})
Poi si può configurare il progetto con CMake, ma come non ha alcun modo magico per trovare la tua libreria installata, non troverà nulla, ma creerà due variabili di cache: SIFTGPU_INCLUDE_DIR
e SIFTGPU_LIBRARY
.
Utilizzare la GUI di CMake per fare in modo che SIFTGPU_INCLUDE_DIR
indichi la directory contenente i file di intestazione e SIFTGPU_LIBRARY
nel file .lib
della libreria di terze parti.
Ripetere l'operazione per ogni libreria di terze parti, configurarla di nuovo e compilare.
In che modo si dice cmake dove risiede il file .dll? Vedo solo il collegamento statico a una libreria e un suggerimento su dove si trova il file di intestazione. – EbbnFlow
Cmake non ha bisogno di sapere dove sono i file dll. Questi file sono necessari solo quando si esegue il file binario non durante la sua compilazione. – Guillaume