我一直在网上搜索,但我找不到任何可以回答我问题的内容(或者我不知道要搜索什么)。
无论如何,这是我的问题: 我想在我的CMake项目中使用3rdParty库(.dll文件)。我想要包含的库(https://github.com/pitzer/SiftGPU)是开源的,并且我也想使用二进制文件,如果相关,也使用CMake作为构建工具。
我希望我足够清楚。
答案 0 :(得分:13)
首先,编辑您的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
文件。
对每个第三方库重复,再次配置并编译。