Opencv CMake、.dll vs.dll.a vs.a:我应该在CMake配置中指定哪个库?

Opencv CMake、.dll vs.dll.a vs.a:我应该在CMake配置中指定哪个库?,opencv,cmake,openblas,Opencv,Cmake,Openblas,我正在使用Windows 10和CMake 3.14.1 我正在尝试自己构建OpenCV(版本4.0.1),因为我需要contrib模块和SFM模块。我下载了openBLAS 0.2.19的预构建版本。它有三个目录,bin、include和lib。 bin目录包括libopenblas.dll,include有标题,lib中有libopenblas.a和libopenblas.dll.a(以及一个cmake目录) 当我用CMake配置openCV时,我当然会将openBLAS_INCLUDE_D

我正在使用Windows 10和CMake 3.14.1

我正在尝试自己构建OpenCV(版本4.0.1),因为我需要contrib模块和SFM模块。我下载了openBLAS 0.2.19的预构建版本。它有三个目录,binincludelib。 bin目录包括libopenblas.dll,include有标题,lib中有libopenblas.a和libopenblas.dll.a(以及一个cmake目录)

当我用CMake配置openCV时,我当然会将openBLAS_INCLUDE_DIR设置为INCLUDE目录。但是我应该为openBLAS_LIB指定哪个文件呢?libopenblas.dll、libopenblas.a或libopenblas.dll.a

稍后,当我构建openCV(使用Visual Studio 2017)时,我应该将.dll放在何处,以便它对构建过程可见


编辑:也许我应该补充一点,OpenBLAS是用minGW编译的,这就是为什么会有那些奇怪的.a和.dll.a文件而不是.lib,我现在至少可以部分回答我的问题了。这两个答案帮助了我:

因此
.a
文件通常是Unix静态库,对于Windows,我们有
.lib
。因为minGW使用GCC,所以它生成
.a
库,但在某种程度上它们与visualstudio和MSVC兼容。所以我猜
libopenblas.a
是完整的静态库,
libopenblas.dll.a
是要与
libopenblas.dll
一起使用的导入库。 现在,在构建openCV时,在CMake中,我指定了
libopenblas.dll.a
作为库和所有工作(配置、构建、安装)。我确实在路径中添加了
.dll
所在的目录,但我不确定是否需要这样做,或者这是最好的方法