我已经构建了libfreenect2库,现在我想将它包含在我的c ++项目中。之前,我已经在cmake中包含了一些像这样的库:
# Include OpenCV
find_package( OpenCV REQUIRED )
target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBS} )
这意味着图书馆必须正确安装"到我的系统让cmake找到它,对吗?
但是,这次我需要手动"在我的项目中包含必要的文件和目录。但我不知道"正确"这样做的方法。
一直关注this tutorial,但令人困惑的是如何添加库,包含目录,添加子目录(为什么突然出现"添加"而不是"包含& #34;),链接库......术语是否不一致,或者方法总是真的这么混乱?我不明白为什么仅仅表达库目录 ONCE 是不够的,那么cmake应该弄清楚如何处理它?抱歉我的无知。
无论如何,包含自定义构建库的首选步骤是什么?
这是我目前的尝试,(当我尝试编译我的项目时)产生"找不到-lfreenect2"
project(kinect-test)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
# Include directories
include_directories ($ENV{HOME}/freenect2/include)
# Find freenect package
set(freenect2_DIR $ENV{HOME}/freenect2/lib/cmake/freenect2)
find_package(freenect2 REQUIRED)
target_link_libraries (${PROJECT_NAME} freenect2)
答案 0 :(得分:0)
您需要指定可以找到给定库的搜索路径。我假设文件libfreenect.so
(或libfreenect.a
)位于/path/to/freenect
- 请根据需要进行编辑,可能使用变量。在target_link_libraries
命令上方添加命令:
link_directories(/path/to/freenect)
答案 1 :(得分:0)
这就是我最终做的事情:
的CMakeLists.txt
project(kinect-test)
cmake_minimum_required(VERSION 2.8)
aux_source_directory(. SRC_LIST)
add_executable(${PROJECT_NAME} ${SRC_LIST})
# Set cmake prefix path to enable cmake to find freenect2
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} $ENV{HOME}/freenect2/lib/cmake/freenect2)
# Find freenect, to set necessary variables
find_package(freenect2 REQUIRED)
# Include directories to get freenect headers
include_directories($ENV{HOME}/freenect2/include)
# Link freenect libraries with the project
target_link_libraries(${PROJECT_NAME} ${freenect2_LIBRARIES})