【发布时间】:2019-08-19 19:47:42
【问题描述】:
我有库 A,它依赖于 OpenCV。我有可执行文件 B,它依赖于库 A。通过我的 cmake 中的以下几行,我可以将 A 链接到 B,而无需将 OpenCV 链接到 B:
add_library(A STATIC ${A_src})
set_target_properties(A PROPERTIES POSITION_INDEPENDENT_CODE ON)
target_include_directories(A PUBLIC include ${OpenCV_INCLUDE_DIRS})
target_link_libraries(A PRIVATE ${OpenCV_LIBRARIES})
add_executable(B src/driver.cpp)
target_link_libraries(B PRIVATE A)
太好了。现在,我有程序 C,它是预先制作的,可以在没有 cmake 的 Visual Studio 2017 中运行。我已将与 A 关联的包含目录、库目录和 .lib 文件添加到我的 C 解决方案的属性中。但是,C 无法构建,因为它找不到 OpenCV。
虽然将 C 链接到 OpenCV 很容易,但我不明白为什么必须这样做。我知道 C 必须能够链接到 A 而无需链接到 OpenCV,因为我使用 B 完成了它。但是,我不确定如何使用 Visual Studio 复制它。
如果有人可以帮助向我解释我做错了什么,我将不胜感激。在过去的几周里,我学到了很多关于 cmake 和 Visual Studio 的知识,但显然我还有很长的路要走。
【问题讨论】:
标签: opencv cmake visual-studio-2017 dependencies static-libraries