CMake乱序添加OpenCV库

时间:2019-03-13 23:02:12

标签: c++ opencv cmake

我需要在链接期间控制库的顺序,但是CMake使用OpenCV库做奇怪的事情。请参阅以下CMakeLists.txt:

cmake_minimum_required(VERSION 3.13)
project(cvtest)

set( CMAKE_VERBOSE_MAKEFILE on )

add_executable(cvtest "test.cpp")

find_package(OpenCV 3 REQUIRED core)
target_link_libraries(cvtest ${OpenCV_LIBS} FOO)

构建生成的makefile时,库按以下顺序链接:

libopencv_core.3.4.2.dylib -lFOO

到目前为止一切都很好(FOO需要倒数第二个)。但是,如果我添加另一个opencv库:

cmake_minimum_required(VERSION 3.13)
project(cvtest)

set( CMAKE_VERBOSE_MAKEFILE on )

add_executable(cvtest "test.cpp")

find_package(OpenCV 3 REQUIRED core highgui)
target_link_libraries(cvtest ${OpenCV_LIBS} FOO)

然后,链接器将按以下顺序接收库:

libopencv_highgui.3.4.2.dylib -lFOO libopencv_videoio.3.4.2.dylib libopencv_imgcodecs.3.4.2.dylib libopencv_imgproc.3.4.2.dylib libopencv_core.3.4.2.dylib

重要的是,FOO不再持续了!我尝试了所有操作,但无法使FOO出现在链接列表的末尾。有谁知道该怎么做?

谢谢

0 个答案:

没有答案