Cmake没有将opencv libs链接到创建的静态库

时间:2016-08-19 17:25:43

标签: opencv static cmake

我正在尝试从cmake创建静态* .a lib。但它没有将opencv libs链接到静态库,因为我得到错误未知引用cv:Mat .....等。 我改变了add_library(Helper SHARED Helper.cpp Helper.h)的那一刻,它正确地编译了共享库。 任何人都可以告诉我问题和解决方案。

-----------------------Cmake File---------------------------------

 cmake_minimum_required(VERSION 2.8)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

find_package(OpenCV REQUIRED)

add_library(Helper STATIC Helper.cpp Helper.h)

target_link_libraries(Helper ${OpenCV_LIBS})

2 个答案:

答案 0 :(得分:0)

尝试在cmake文件中添加此配置

set(OpenCV_STATIC ON)

答案 1 :(得分:0)

问题

我理解以下问题-您有一个要编译的项目,其输出是静态库。它与OpenCV的静态库链接。预期的输出是一个包含单个静态库的库,该库具有OpenCV所需的所有功能。

答案

使用Cmake时,添加以下标志:

target_link_libraries(your_target_name -static)

这将使GCC / Clang输出单个静态库。

我不确定如何在Windows中实现这一目标。

关于@j.kahil答案的评论

我不认为他只打算使用OpenCV的静态库,但他希望项目的输出(这是一个静态库)包括所有需要的OpenCV静态库。