Qt 项目树工程,拷贝子项目dll到子项目exe运行路径

1、项目树工程

2、项目树列表
---- BuildAll
-------- App (exe)
-------- Database (dll)

注:使用 子项目–>添加库–>内部库 的方式

3、qmake 内置的变量

$$OUT_PWD 表示输出文件(如可执行文件、库文件等)的目录路径。
$$PWD:表示当前项目文件的目录路径。
$$TARGET:表示生成的目标文件的名称(不包括扩展名)。
$$TARGET_EXT:表示生成的目标文件的扩展名。例如,在 Windows 上,它可能为 .exe。
$$DESTDIR:表示安装目标文件时的根目录路径。默认情况下,它为空字符串,表示将目标文件安装在系统默认位置。
$$INCLUDEPATH:表示包含头文件的目录路径列表。
$$LIBS:表示要链接到目标文件中的库文件列表。
$$QMAKE_CFLAGS:表示 C 编译器选项。
$$QMAKE_CXXFLAGS:表示 C++ 编译器选项。
$$QMAKE_LFLAGS:表示链接器选项。

4、在 App 子项目的 .pro 文件下输入代码
在 App 子项目下拷贝 Database 子项目中的Database.dll文件


#####################################################################################################
########## 功能:项目树工程,将子项目库文件(dll、lib)拷贝到子项目(exe)的运行路径下 ############ 注意: 在 Windows 下,路径分隔符是反斜杠 \,而不是正斜杠 /; 在非 Windows 下,可以直接用正斜杠 / ##PROJECT_OUT_PWD = ""
win32 {# windows 下,将路径分隔符从 / 替换为 \PROJECT_OUT_PWD = $$replace(OUT_PWD, "/", "\\")
} else:unix {# unix 下,不用转换PROJECT_OUT_PWD = $$OUT_PWD
}# 先定义变量
DEBUG_SOURCE_DLL_PATH = ""
RELEASE_SOURCE_DLL_PATH = ""
DEBUG_DEST_EXE_PATH = ""
RELEASE_DEST_EXE_PATH = ""# 根据需要再对其赋值
win32 {DEBUG_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD\..\Database\debug\Database.dllRELEASE_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD\..\Database\release\Database.dll# 定义目标路径DEBUG_DEST_EXE_PATH = $$PROJECT_OUT_PWD\debugRELEASE_DEST_EXE_PATH = $$PROJECT_OUT_PWD\release} else:unix {DEBUG_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD/../Database/debug/Database.soRELEASE_SOURCE_DLL_PATH = $$PROJECT_OUT_PWD/../Database/release/Database.so# 定义目标路径DEBUG_DEST_EXE_PATH = $$PROJECT_OUT_PWD/debugRELEASE_DEST_EXE_PATH = $$PROJECT_OUT_PWD/release
}# 根据构建模式选择复制命令
win32 {CONFIG(debug, debug|release) {# Debug 模式下的复制命令QMAKE_POST_LINK += copy /Y $$quote($$DEBUG_SOURCE_DLL_PATH) $$quote($$DEBUG_DEST_EXE_PATH)} else {# Release 模式下的复制命令QMAKE_POST_LINK += copy /Y $$quote($$RELEASE_SOURCE_DLL_PATH) $$quote($$RELEASE_DEST_EXE_PATH)}
} else {CONFIG(debug, debug|release) {# Debug 模式下的复制命令 (Unix-like 系统)QMAKE_POST_LINK += cp -f $$quote($$DEBUG_SOURCE_DLL_PATH) $$quote($$DEBUG_DEST_EXE_PATH)} else {# Release 模式下的复制命令 (Unix-like 系统)QMAKE_POST_LINK += cp -f $$quote($$RELEASE_SOURCE_DLL_PATH) $$quote($$RELEASE_DEST_EXE_PATH)}
}#####################################################################################################

5、在 Database 子项目的 .pro 文件下输入代码
将 Database 子项目中的 Database.dll 文件拷贝到子项目App


#####################################################################################################
############ 功能:项目树工程,将子项目库文件(dll、lib)拷贝到子项目(exe)的运行路径下 ##############注意: 在 Windows 下,路径分隔符是反斜杠 \,而不是正斜杠 /; 在非 Windows 下,可以直接用正斜杠 / ### 一般情况下,修改这两个工程名即可
# 源工程名
SOURCE_PROJECT_NAME = Database
# 目标工程名
TARGET_PROJECT_NAME = AppPROJECT_OUT_PWD = ""
win32 {# windows 下,将路径分隔符从 / 替换为 \\PROJECT_OUT_PWD = $$replace(OUT_PWD, "/", "\\\\")
} else:unix {# unix 下,不用转换PROJECT_OUT_PWD = $$OUT_PWD
}# 先定义变量
DEBUG_SOURCE_PATH = ""
RELEASE_SOURCE_PATH = ""
DEBUG_TARGET_PATH = ""
RELEASE_TARGET_PATH = ""# 根据需要再对其赋值
win32 {# 源文件路径DEBUG_SOURCE_PATH = $$PROJECT_OUT_PWD\\debug\\$$SOURCE_PROJECT_NAME.dllRELEASE_SOURCE_PATH = $$PROJECT_OUT_PWD\\release\\$$SOURCE_PROJECT_NAME.dll# 目标路径DEBUG_TARGET_PATH = $$PROJECT_OUT_PWD\\..\\$$TARGET_PROJECT_NAME\\debugRELEASE_TARGET_PATH = $$PROJECT_OUT_PWD\\..\\$$TARGET_PROJECT_NAME\\release} else:unix {# 源文件路径DEBUG_SOURCE_PATH = $$PROJECT_OUT_PWD/debug/$$SOURCE_PROJECT_NAME.soRELEASE_SOURCE_PATH = $$PROJECT_OUT_PWD/release/$$SOURCE_PROJECT_NAME.so# 目标路径DEBUG_TARGET_PATH = $$PROJECT_OUT_PWD/../$$TARGET_PROJECT_NAME/debugRELEASE_TARGET_PATH = $$PROJECT_OUT_PWD/../$$TARGET_PROJECT_NAME/release
}# 根据构建模式选择复制命令
win32 {CONFIG(debug, debug|release) {# Debug 模式下的复制命令QMAKE_POST_LINK += copy /Y $$quote($$DEBUG_SOURCE_PATH) $$quote($$DEBUG_TARGET_PATH)} else {# Release 模式下的复制命令QMAKE_POST_LINK += copy /Y $$quote($$RELEASE_SOURCE_PATH) $$quote($$RELEASE_TARGET_PATH)}
} else {CONFIG(debug, debug|release) {# Debug 模式下的复制命令 (Unix-like 系统)QMAKE_POST_LINK += cp -f $$quote($$DEBUG_SOURCE_PATH) $$quote($$DEBUG_TARGET_PATH)} else {# Release 模式下的复制命令 (Unix-like 系统)QMAKE_POST_LINK += cp -f $$quote($$RELEASE_SOURCE_PATH) $$quote($$RELEASE_TARGET_PATH)}
}#####################################################################################################

第4、第5步,选择其中一种方式即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/667326.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[leetcode] 22. 括号生成

文章目录 题目描述解题方法方法一:dfs遍历java代码 方法二:按照卡特兰数的思路递归求出有效括号组合java代码 相似题目 题目描述 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 示…

Nginx 介绍和使用

Nginx 介绍和使用 一、Nginx简介 Nginx是一款高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。它具有轻量级、高并发处理能力、低资源消耗等优点,常被用于Web服务器、反向代理和负载均衡。Nginx通过事件驱动的方式进行设计&#xff0…

SQL注入其他方法

此次实验因为环境问题很多无法复现,在此只讨论过程和方法 一、SQL注入之outfile注入 mysql的outfile的作用是导出文件,使用此方法的必要条件:(此方法成功率极低) 1、知道目标网站的物理路径; 2、%secur…

sql升级更新解决方案

1.问题 随着项目版本的迭代,有时候需要更新数据库如修改字段、更新数据、删除数据等等,但是如果系统已经部署到生产环境了,让开发人员连接生产环境的数据库手动处理是不太实际的,生产环境数据库一般不允许外部连接,而…

便宜寄快递,就选闪侠惠递,帮您省钱!

随着电子商务的发展,物流也越来越发达,人们的生活中有很多地方都与物流快递打交道。网购或者给远方的亲戚朋友寄礼物等等都需要快递。有时候就止步于昂贵的快递的,其实选对方法,寄快递并不贵... 编辑 现在一般寄快递都是选择去菜鸟…

5分钟快速掌握 XML (Extensible Markup Language)

背景 在Java开发的过程中,我们经常需要和配置文件打交道,其中接触最多的就是XML。从最初学习 JavaWeb 时在 Tomcat 中配置servlet,到后来接触Spring框架并在XML中编写各种配置,XML一直是不可或缺的一部分。然而,XML的…

1-2 动手学深度学习v2-基础优化方法-笔记

最常见的算法——梯度下降 当一个模型没有显示解的时候,该怎么办呢? 首先挑选一个参数的随机初始值,可以随便在什么地方都没关系,然后记为 w 0 \pmb{w_{0}} w0​在接下来的时刻里面,我们不断的去更新 w 0 \pmb{w_{0}…

我在代码随想录|写代码Day25 |回溯算法|93.复原IP地址 , 78.子集 , 90.子集II

学习目标: 博主介绍: 27dCnc 专题 : 数据结构帮助小白快速入门 👍👍👍👍👍👍👍👍👍👍👍👍 ☆*: .。. o(≧▽≦)…

C系列-动态内存管理

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 目录 为什么要有动态内存分配 malloc和free malloc free calloc和realloc calloc realloc 常见的动态内存的错误 对NULL指针的解引用操作 ​编辑 对动态开辟空间的越界访问…

ES6-const

一、基本用法 - 语法:const 标识符初始值;注意:const一旦声明变量,就必须立即初始化,不能留到以后赋值 - 规则:1.const 声明一个只读的常量,一旦声明,常量的值就不能改变2.const 其实保证的不是变量的值不…

查看自己电脑是arm还是x64(x86);linux操作系统识别

1、查看自己电脑是arm还是x64(x86) linux 参考: https://liuweiqing.blog.csdn.net/article/details/131783851 uname -a如果输出是 x86_64,那么你的系统是 64 位的 x86 架构(通常我们称之为 x64)。如果…

2023高精地图甲级测绘资质最新名单【高德地图】

根据2023年自然资源部公布的名单显示,以下公司通过“地图甲级测绘资质”换证审核,也就意味着,以下这些公司可以继续从事电子地图的采集和制作、商业合作等相关业务。 而这一点,对于以电子地图导航为主要业务支撑的企业至关重要。…

C-C++内存管理

C/C内存分布 内存的分配方式有几种? 静态内存分配(Static Memory Allocation): 静态内存分配是在编译时确定内存大小和位置的分配方式。全局变量、静态变量和常量都使用静态内存分配。这些变量在程序的整个生命周期中都存在&…

创建TextMeshPro字体文件

相比于Unity的Text组件,TextMesh Pro提供了更强大的文本格式和布局控制,更高级的文本渲染技术,更灵活的文本样式和纹理支持,更好的性能以及更易于使用的优点。但unity自带TextMeshPro字体不支持中文。这里使用普通字体文件生成Tex…

React16源码: React中event事件对象的创建过程源码实现

event 对象 1 ) 概述 在生产事件对象的过程当中,要去调用每一个 possiblePlugin.extractEvents 方法现在单独看下这里面的细节过程,即如何去生产这个事件对象的过程 2 )源码 定位到 packages/events/EventPluginHub.js#L172 f…

Spring事件之注解@EventListener讲解

文章目录 1 注解EventListener1.1 示例Demo1.1.1 简单例子1.1.2 解耦1.1.3 Spring事件 1.2 深入EventListener1.2.1 debug调试1.2.2 问题一: Spring是怎么知道要去触发这个方法1.2.3 问题二:ApplicationListenerMethodAdapter1.2.4 问题三:Si…

Vue学习笔记:计算属性

计算属性 入门进阶二次进阶三次进阶四次进阶结界五次进阶六次进阶七次进阶八次进阶九次进阶终章彩蛋 入门 Vue.js中,计算属性示例: export default {data() {return {firstName: John,lastName: Doe};},computed: {// 计算属性:全名fullNam…

(12)喝汽水

文章目录 每日一言题目解题思路一代码 解题思路二代码 结语 每日一言 长风沛雨,艳阳明月。田野被喜悦铺满,天地间充满着生的豪情。 题目 已知1瓶汽水1元,2个空瓶可以换一瓶汽水,输入整数n(n>0)&#x…

Maven工程的配置及使用

一、Maven章节 Maven 是 Apache 软件基金会组织维护的一款专门为 Java 项目提供构建和依赖管理支持的工具 1.1、maven的作用 1)依赖管理: 方便快捷的管理项目依赖的资源包(jar包)避免版本冲突 2)统一项目结构&…

机器学习算法之逻辑回归算法(Logistic Regression)

逻辑回归算法是一种用于分类问题的经典机器学习算法。虽然它的名字中带有“回归”,但实际上逻辑回归用于解决分类问题,特别是二分类问题。本篇博文将详细介绍逻辑回归算法的工作原理、应用领域以及Python示例。 算法背景 逻辑回归起源于20世纪初,用于分析生存率数据。随后…