【发布时间】:2015-10-06 21:51:05
【问题描述】:
我有一个项目,在子目录中包含一个预构建版本的 opencv。例如:
我的项目
* CMakeLists.txt
* 源
* 第三方
** CMakeLists.txt
** opencv
**** 包括
****库
我想链接第三方目录中的 opencv 版本。我的问题是,我如何通知 CMake 链接到 lib 中预构建的 dylib 文件,并将头文件包含在相关的 opencv 目录中?
cmake_minimum_required(VERSION 2.8.9)
project (myproject)
include_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/include)
link_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/lib)
file(GLOB SOURCES "*.cpp")
add_executable(myproject ${SOURCES})
target_link_libraries(myproject opencv_calib3d opencv_contrib opencv_core opencv_highgui opencv_features2d opencv_highgui opencv_imgproc)
【问题讨论】:
-
如果你使用
find_package(OpenCV),那么在它之前使用set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/third_party/opencv)。或者,您可以使用直接路径:include_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/include)和对应的link_directories(${CMAKE_SOURCE_DIR}/third_party/opencv/lib)调用。这些标准命令有什么问题? -
@Tsyvarev 我已经采纳了您的建议并应用了它们(请参阅修改后的问题描述)。不幸的是,我仍然收到链接器错误(ld: symbol(s) not found for architecture x86_64)
-
请在您的问题中添加链接器的错误消息。你有另一个 OpenCV 库,安装到默认路径中吗?链接器找到了库文件,但没有在其中找到符号,这看起来很奇怪。
-
错误信息只是一个symbol not found信息,表示我没有链接到库
-
"Symbol(s) not found" 消息表明所有请求的(在
target_link_libraries())找到了库,但没有一个定义给定的符号乙>。顺便说一句,此错误可能是由于代码使用的符号名称不正确造成的。
标签: cmake