在我的CMake项目中使用静态构建而不是OpenCV的共享构建

Use static build instead of shared build of OpenCV in my CMake project

本文关键字:构建 OpenCV 共享 静态 CMake 我的 项目      更新时间:2023-10-16

我的CMake项目使用OpenCV,但是,它链接到共享版本,这需要OpenCV DLL才能使我的可执行文件工作。如何告诉CMake改用OpenCV的静态构建?

我应该在我的 CMakeList.txt 文件中更改什么?这是它现在的样子:

cmake_minimum_required(VERSION 2.8)
project (Tutorial)
find_package (OpenCV REQUIRED)
add_executable (Tutorial WIN32 main.cpp)
target_link_libraries (Tutorial ${OpenCV_LIBS})

我从 https://stackoverflow.com/a/26920527/492336 中找到了答案:

实际上,这个问题似乎已经在OpenCV附带的OpenCVConfig.cmake中得到了修复。您所要做的就是在CMakeLists.txt中定义OpenCV_STATIC。即

set(OpenCV_STATIC ON)
find_package(OpenCV REQUIRED)

这对我有用,尽管我还需要将 CRT 指定为静态(因为静态 OpenCV 与静态 CRT 链接)。