Vya*_*lav 11 c++ opencv cmake static-linking
我对cmake比较陌生,经过几天的挣扎之后无法弄清楚以下事情:
我有一个项目依赖于opencv(它本身就是一个cmake项目),我想静态链接opencv库.我正在做的是我在我的项目中有一份opencv源代码,并将其包含在我的CMakeLists.txt中
ExternalProject_Add(my_copy_of_opencv_project
CMAKE_ARGS -D BUILD_SHARED_LIBS=NO ...
CMAKE_INSTALL_PREFIX=${MY_OPENCV_INSTALL_DIR}
SOURCE_DIR ${PATH_TO_OPENCV_SRCS}
)
Run Code Online (Sandbox Code Playgroud)
所有构建得很好,我遇到问题的地方是我无法可靠地确定opencv库的位置.例如在linux/mac上有${MY_OPENCV_INSTALL_DIR}/lib并且被命名为,libopencv_core.a而在安装了VS 2012的32位Windows上,libs ${MY_OPENCV_INSTALL_DIR}/lib/x86/vc11/staticlib和Debug配置中的libs命名为opencv_core247d.lib.
所以问题是我可以以某种方式获取OpenCV构建(以及根lib文件夹)生成的所有库的列表,并通过类似的方式链接它们target_link_libraries(mylib opencv_core ...)吗?
也许我做错了什么或过于复杂.所以我基本上想要的是静态编译我的嵌入式opencv源代码树并以"跨平台"方式链接其库.
任何指针都非常感谢!谢谢!
max*_*int 21
将cmake与OpenCV项目一起使用的最佳解决方案是:
例如(CMakeLists.txt):
project(test_project)
if(WIN32)
set(OpenCV_DIR "d:/libs/opencv-2.4.8/build")
else()
set(OpenCV_DIR "/usr/lib/opencv")
endif()
find_package(OpenCV REQUIRED COMPONENTS core imgproc highgui)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(test main.cpp)
target_link_libraries(test ${OpenCV_LIBS})
Run Code Online (Sandbox Code Playgroud)
它适用于跨平台.
| 归档时间: |
|
| 查看次数: |
19885 次 |
| 最近记录: |