当前位置: 首页 > news >正文

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步,选择其中一种方式即可。

相关文章:

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

1、项目树工程 2、项目树列表 ---- BuildAll -------- App (exe) -------- Database (dll) 注:使用 子项目–>添加库–>内部库 的方式 3、qmake 内置的变量 $$OUT_PWD 表示输出文件(如可执行文件…...

进程间通信方式

1>内核提供的原始通信方式有三种 1)无名管道 2)有名管道 3)信号 2>System V提供了三种通信方式 4)消息队列 5)共享内存 6)信号量(信号灯集) 3>套接字通信 7)socke…...

[linux]:匿名管道和命名管道(什么是管道,怎么创建管道(函数),匿名管道和命名管道的区别,代码例子)

目录 一、匿名管道 1.什么是管道?什么是匿名管道? 2.怎么创建匿名管道(函数) 3.匿名管道的4种情况 4.匿名管道有5种特性 5.怎么使用匿名管道?匿名管道有什么用?(例子) 二、命名…...

Python调用matlab程序

matlab官网:https://ww2.mathworks.cn/?s_tidgn_logo matlab外部语言和库接口,包括 Python、Java、C、C、.NET 和 Web 服务。 matlab和python的版本 安装依赖配置 安装matlab的engine 找到matlab的安装目录:“xxx\ extern\engines\python…...

FlinkSql 窗口函数

Windowing TVF 以前用的是Grouped Window Functions(分组窗口函数),但是分组窗口函数只支持窗口聚合 现在FlinkSql统一都是用的是Windowing TVFs(窗口表值函数),Windowing TVFs更符合 SQL 标准且更加强大…...

十分钟GIS——geoserver+postgis+udig从零开始发布地图服务

1数据库部署 1.1PostgreSql安装 下载到安装文件后(postgresql-9.2.19-1-windows-x64.exe),双击安装。 指定安装目录,如下图所示 指定数据库文件存放目录位置,如下图所示 指定数据库访问管理员密码,如下图所…...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Span组件 鸿蒙(HarmonyOS)作为Text组件的子组件&#xff0…...

Leetcode—42. 接雨水【困难】

2024每日刷题&#xff08;112&#xff09; Leetcode—42. 接雨水 空间复杂度为O(n)的算法思想 实现代码 class Solution { public:int trap(vector<int>& height) {int ans 0;int n height.size();vector<int> l(n);vector<int> r(n);for(int i 0; …...

[Python] opencv - 什么是直方图?如何绘制图像的直方图?如何对直方图进行均匀化处理?

什么是直方图&#xff1f; 直方图是一种统计图&#xff0c;用于展示数据的分布情况。它将数据按照一定的区间或者组进行划分&#xff0c;然后计算在每个区间或组内的数据频数或频率&#xff08;即数据出现的次数或占比&#xff09;&#xff0c;然后用矩形或者柱形图的形式将这…...

ppi rust开发 python调用

创建python的一个测试工程 python -m venv venv .\venv\Scripts\activatepip install cffi创建一个rust的lib项目 cargo new --lib pyrustlib.rs #[no_mangle] pub extern "C" fn rust_add(x: i32, y: i32) -> i32 {x y }Cargo.toml [package] name "p…...

网站后端开发 thinkphp6 入门教程合集(更新中)

thinkphp6 入门&#xff08;1&#xff09;--安装、路由规则、多应用模式 thinkphp6 入门&#xff08;1&#xff09;--安装、路由规则、多应用模式_软件工程小施同学的博客-CSDN博客 thinkphp6 入门&#xff08;2&#xff09;--视图、渲染html页面、赋值 thinkphp6 入门&#x…...

Web前端框架-Vue(初识)

文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…...

配置dns服务的正反向解析

服务端IP客户端IP网址192.168.153.137192.168.153.www.openlab.com 1&#xff1a;正向解析 1.1关闭客户端和服务端的安全软件&#xff0c;安装bind软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# yum install bind -y [rootnod…...

小白水平理解面试经典题目LeetCode 71. Simplify Path【Stack类】

71. 简化路径 小白渣翻译 给定一个字符串 path &#xff0c;它是 Unix 风格文件系统中文件或目录的绝对路径&#xff08;以斜杠 ‘/’ 开头&#xff09;&#xff0c;将其转换为简化的规范路径。 在 Unix 风格的文件系统中&#xff0c;句点 ‘.’ 指的是当前目录&#xff0c;…...

电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM) 所谓预测,就是指通过对事物进行分析及研究,并运用合理的方法探索事物的发展变化规律,对其未来发展做出预先估计和判断。…...

YY调音台:音频后期处理

我从事影视后期处理的工作&#xff0c;主要负责音频、音效合成这块工作内容。在影视作品中&#xff0c;声音不仅仅是背景元素&#xff0c;它在叙事和创造情感氛围上发挥着至关重要的作用。我们的工作不仅要让听众听到声音&#xff0c;更要让他们通过声音感受到情感的波动和故事…...

一键部署一个监控系统hertzbeat

效果 特点 一站式监控告警通知&#xff0c;支持应用服务&#xff0c;数据库&#xff0c;操作系统&#xff0c;中间件&#xff0c;云原生&#xff0c;网络等。 易用友好&#xff0c;无需 Agent&#xff0c;全页面操作&#xff0c;鼠标点一点就能监控告警。 强大监控模版能力&…...

为电子表格嵌入数据库,Excel/WPS一键升级为管理系统

将Excel表格转化为管理系统&#xff0c;这款工具能够实现只需导入表格数据&#xff0c;即可自动生成相应的软件和APP。 表格办公的烦恼&#xff0c;有遇到吧&#xff1f; 对于具有一定规模的企业而言&#xff0c;各类表格如同繁星般众多&#xff0c;既有日常使用的常规表格&a…...

搜索与图论(一)(深搜,广搜,树与图的存储遍历,拓扑排序)

一、DFS 往深里搜&#xff0c;搜到叶子结点那里&#xff0c;回溯&#xff0c;到可以继续到叶子结点深搜的位置。 1、回溯一定要恢复现场 2、定义一个与当前递归层数有关的终止条件&#xff08;题目要求的东西&#xff09; 3、每层都用循环判断是否存在可以dfs的路 输出数字…...

【开源】基于JAVA+Vue+SpringBoot的停车场收费系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 停车位模块2.2 车辆模块2.3 停车收费模块2.4 IC卡模块2.5 IC卡挂失模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 停车场表3.2.2 车辆表3.2.3 停车收费表3.2.4 IC 卡表3.2.5 IC 卡挂失表 四、系统实现五、核心代码…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

Python 高效图像帧提取与视频编码:实战指南

Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

Android屏幕刷新率与FPS(Frames Per Second) 120hz

Android屏幕刷新率与FPS(Frames Per Second) 120hz 屏幕刷新率是屏幕每秒钟刷新显示内容的次数&#xff0c;单位是赫兹&#xff08;Hz&#xff09;。 60Hz 屏幕&#xff1a;每秒刷新 60 次&#xff0c;每次刷新间隔约 16.67ms 90Hz 屏幕&#xff1a;每秒刷新 90 次&#xff0c;…...

【Java多线程从青铜到王者】单例设计模式(八)

wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本&#xff0c;sleep也是可以指定时间的&#xff0c;也就是说时间一到就会解除阻塞&#xff0c;继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒)&#xff0c;wait能被notify提前唤醒&#xf…...