Najpierw edytuj plik CMakeLists.txt, aby dołączyć bibliotekę strony trzeciej. Będziesz potrzebował dwóch rzeczy: ścieżki do plików nagłówkowych i pliku biblioteki do połączenia. Na przykład:
# 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()
Dalej, można zrobić to samo dla innych bibliotek i po wykryciu co bibliotek, link do strony docelowej:
target_link_libraries(yourtarget ${YOUR_LIBRARIES})
Następnie można skonfigurować swój projekt z CMake, ale jako nie ma żadnego magicznego sposobu na znalezienie zainstalowanej biblioteki, nie znajdzie niczego, ale utworzy dwie zmienne pamięci podręcznej: SIFTGPU_INCLUDE_DIR
i SIFTGPU_LIBRARY
.
Użyj CUpewnij GUI mieć SIFTGPU_INCLUDE_DIR
wskazując na katalogu zawierającego pliki nagłówkowe i SIFTGPU_LIBRARY
do pliku z biblioteki strony trzeciej .lib
.
Powtórz dla każdej biblioteki osób trzecich, ponownie skonfiguruj i skompiluj.
W jaki sposób informuje program cmake, gdzie znajduje się plik .dll? Widzę tylko statyczne połączenie z biblioteką i podpowiedź, gdzie znajduje się plik nagłówkowy. – EbbnFlow
Cmake nie muszą wiedzieć, gdzie są pliki DLL. Pliki te są potrzebne tylko podczas uruchamiania pliku binarnego, a nie podczas kompilowania. – Guillaume