添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

找了一圈,发现cmake 中好像没有直接设置 引用dll 路径的方法。
Windows中引用的 dll 路径必须在 PATH 环境变量中或者在当前目录。
因此可以引申出来2个解决方法。

  1. cmake copy 到 可执行文件目录
ADD_CUSTOM_COMMAND (TARGET ${PROJECT_NAME} POST_BUILD
# DEBUG
COMMENT "Copying dll" VERBATIM
COMMAND ${CMAKE_COMMAND} -E copy ${CONAN_BIN_DIRS_CURL}/libcurl-d.dll ${CMAKE_BINARY_DIR}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${CONAN_BIN_DIRS_ZLIB}/zlibd1.dll ${CMAKE_BINARY_DIR}/Debug
  1. 把dll 路径加到PATH
使用以下语法添加的其他环境变量:这里配置了环境变量PATH ,指定运行时dll的路径。当我们使用VS2019创建普通sln项目时,指定dll 的目录有以下三种方法!:指定在生成项目时要调用的 CMake 目标(即你前面生成的。那么如果你创建的是CMake项目时,应该怎么设置呢?:传递给要调试的程序的命令行自变量。 cmake编译opencv3.2过程中需要手动下载的文件,包括:ippicv_windows_20151201.zip;opencv_ffmpeg.dll;opencv_ffmpeg_64.dll opencv3.2.0\opencv\sources\3rdparty\ippicv\downloads\windows-04e81ce5d0e329c3fbc606ae32cad44d\ippicv_windows_20151201.zip;\opencv3.2.0\opencv\sources\3rdparty\ffmpeg\downloads\a423363a6eb76d362ca6c406c96c8db6\opencv_ffmpeg_64.dll;opencv3.2.0\opencv\sources\3rdparty\ffmpeg\downloads\f081abd9d6ca7e425d340ce586f9c090\opencv_ffmpeg.dll下的文件替换即可 CMake脚本可使用Tim Davis的 (CHOLMOD,UMFPACK,AMD,LDL,SPQR等)和Visual Studio中的以及CMake支持的其余Windows / Linux / OSX IDE。 该项目包括预编译的BLAS / LAPACK DLL,可轻松与Visual C ++一起使用。 根据BSD 3-条款许可获得许可。 目标是在标准Linux软件包系统(例如libsuitesparse-dev )和Windows下的手动编译中,使用一个CMake代码针对SuiteSparse进行构建。 图片来源:何塞·路易斯·布兰科(阿尔梅里亚大学); 杰罗姆·埃斯诺(Jerome Esnault)(INRIA); (1)安装 。 (2)仅适用于Linux / Mac:安装LAPACK和BLAS。 在Debian / Ubuntu中: sudo apt-get in 一、dll生成 1、设置项目属性:打开vs,建立空项目,在项目的 配置属性->常规->项目默认值->配置类型 修改为:动态库(.dll) 2、准备文件:填写头文件和源文件,注意头文件的声明,源文件正常。 ————————————————————————————————————— | 头文件: ... 新建一个文件夹,暂且命名为“makeDllLib” 文件夹中放入三个文件.c和.h和.def。其中.def文件是非必须的,但它有利于生成.lib文件和导出函数。 三个文件的内容如下: /*ADD.cpp*/ #include "ADD.hpp" int my_add(int a, int b) { return a + b; /*ADD.hpp*/ #pragma once #ifndef __ADD_HPP__ #define __ 先使用cd命名切换到当前目录 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200902153821969.png#pic_center) tree /F >E:\目录.md 生成树形图,前面是命名,后面是生成文件的位置 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200902153901168.png#pic_center) 在完成接口开发后,为了给其他开发人员调用,通常需要将这部分代码打包生成动态链接库文件。动态链接库很好地保证了代码的封装性和独立性,作为接口,它可以很好地独立于主程序,便于更新。调用接口的主程序编译时也会绕过已生成的动态链接库,仅作连接,在运行时使用它,减少了前端人员编译的时间消耗。...... 之前我们学到了如何编写一个可执行程序和Library,在继续学习之前,需要解释下target,在cmake中我们可以给executable和library设置一个target名字,这样可以方便我们在后续对target进行更加详细的属性设置。本节我们将学习如何在项目中引用lib,相关的api有:makefile复制代码target_xxx的命令颗粒度更细,是比较高版本的命令。