我需要在链接期间控制库的顺序,但是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出现在链接列表的末尾。有谁知道该怎么做?
谢谢