我有一個項目,其中包含一個子目錄中的opencv的預建版本。例如:如何配置cmake以鏈接到預構建的共享庫?
MyProject的
*的CMakeLists.txt
* SRC
* THIRD_PARTY
**的CMakeLists.txt
**的OpenCV
****包括
**** LIB
我想鏈接到位於third_party目錄中的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的)''然後設置(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
@Tsyvarev我已經採納了您的建議並將其應用(請參閱推薦的問題描述)。不幸的是,我仍然得到一個鏈接器錯誤(ld:symbol(s)not found for architecture x86_64) –
Plesase,將鏈接器的錯誤消息添加到您的問題中。你有另一個OpenCV庫,安裝到默認路徑?這看起來很奇怪,鏈接器找到了庫文件,但沒有找到它的符號。 – Tsyvarev