首先,編輯您的CMakeLists.txt以包含您的第三方庫。您需要兩件事:頭文件和庫文件的鏈接路徑。例如:
# 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()
接下來,你可以對其他圖書館做同樣的檢測每一個庫時,鏈接到目標:
target_link_libraries(yourtarget ${YOUR_LIBRARIES})
然後,你可以配置CMake的項目,但作爲它沒有任何神奇的方式來找到你安裝的庫,它不會找到任何東西,但它會創建兩個緩存變量:SIFTGPU_INCLUDE_DIR
和SIFTGPU_LIBRARY
。
使用CMake GUI將SIFTGPU_INCLUDE_DIR
指向包含頭文件的目錄,並將SIFTGPU_LIBRARY
指向第三方庫的.lib
文件。
重複每個第三方庫,再次配置並編譯。
這是如何告訴cmake .dll文件所在的地方?我只看到靜態鏈接到一個庫並提供一個提示頭文件的位置。 – EbbnFlow
Cmake不需要知道dll文件在哪裏。這些文件只在運行二進制文件時不需要編譯時才需要。 – Guillaume