【问题标题】:CMake: Link different OpenCV libs to different executables of same projectCMake:将不同的 OpenCV 库链接到同一项目的不同可执行文件
【发布时间】:2015-03-22 11:37:27
【问题描述】:

我有一个使用 OpenCV 的项目,其项目文件是通过 cmake 生成的。现在在 CMake 中添加 opencv 库通常是这样的:

find_package(OpenCV REQUIRED core highgui gpu)
add_executable(SomeExecutable someSource.cpp)
target_link_libraries(SomeExecutable ${OpenCV_LIBS})

这会将 libs 核心、highgui 和 gpu 链接到这个可执行文件。现在,如果我有一个包含多个可执行文件的项目,是否可以将不同的 OpenCV 库添加到不同的可执行文件中? (例如,因为我不希望其他应用程序加载不必要的库)。

【问题讨论】:

    标签: c++ opencv cmake


    【解决方案1】:

    您不应将您的目标与所有找到的包链接。而不是写:

    target_link_libraries(SomeExecutable ${OpenCV_LIBS})
    

    你可能想写:

    target_link_libraries(SomeExecutable cxcore highgui)
    

    对于 OpenCV 库的名称,请检查 CMake 路径中的 FindOpenCV.cmake 文件。

    【讨论】:

    • 我不确定你是否明白我的意思。我的问题不是,我想使用位于不同位置的两个不同的 OpenCV 实例。我想要的只是能够控制哪些模块用于同一项目的不同可执行文件。例如。我只想将coreimproc 用于第一个,而将coregpu 用于第二个。 OpenCV 查找脚本只定义了变量OpenCV_LIBS,它包含了所有被搜索的库。当然,我可以尝试使用不同的模块列表调用 find_package 两次,但这看起来不是很优雅。
    • 好的,谢谢。效果很好。但是,目标名称对我来说略有不同(opencv_coreopencv_highgui 而不是cxcorehighgui 等)。我使用opencv自带的cmake配置脚本。
    猜你喜欢
    • 2019-08-20
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多