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

关于Qt项目配置,项目编译生成的库文件路径详解

1.默认生成路径

默认情况下,Qt 项目会在项目根目录下创建一个 构建目录,生成的库文件存储在构建目录的 debugrelease 子目录中。路径结构如下:

项目根目录/
├── build-项目名称-<Kit类型>-<Debug/Release>/  # Shadow build模式
│   ├── debug/ 或 release/
│   │   └── lib项目名称.so (Linux)
│   │   └── 项目名称.dll (Windows)
│   └── 项目名称.lib (Windows静态库)
└── 项目名称.pro


2. 路径组成要素:

构建模式

  • CONFIG += debug → 生成到 debug/ 目录。
  • CONFIG += release → 生成到 release/ 目录。

架构标识(Android/iOS 特殊处理)

android_armv7/  # Android ARMv7架构库
ios/            # iOS通用库

关键 .pro 配置参数

# 控制生成路径的核心变量
DESTDIR = $$OUT_PWD/lib  # 设置输出到构建目录下的lib子目录
TARGET = mylibrary       # 修改最终生成的文件名前缀
CONFIG += shared         # 生成动态库(.so/.dll)
CONFIG += static         # 生成静态库(.a/.lib)

平台差异

Windows

Debug/
├── mylibrary.dll   # 动态库
└── mylibrary.lib   # 导入库
Release/
└── mylibrary.dll

Linux/macOS

libmylibrary.so.1.0.0  # 带版本号的动态库
libmylibrary.a         # 静态库

推荐优化配置

# 统一输出到构建目录的lib子目录
CONFIG(debug, debug|release) {DESTDIR = $$OUT_PWD/debug/lib
} else {DESTDIR = $$OUT_PWD/release/lib
}# 自动创建目标目录
QMAKE_POST_LINK += $$QMAKE_MKDIR $$shell_path($$DESTDIR)


3.了解常用配置

1.DESTDIR 是一个路径配置语句

DESTDIR 是一个路径配置语句,用于指定编译生成的目标文件(如可执行文件或库文件)的输出目录

通过合理配置 DESTDIR,可以更好地管理项目的构建输出文件,避免文件散乱,提升项目可维护性

如果不配置DESTDIR,输入会根据如下配置输出

(1)影子构建(Shadow Build)

如果启用影子构建(Qt Creator 默认行为),文件会输出到独立的构建目录(如 ../build-project-Desktop_Qt_5_15_2-Debug),而非项目目录

(2)默认输出

所以好的项目一定要配置DESTDIR 配置生成可执行文件或库文件目录

否则会很乱

1.如果没有在pro文件中配置生成路径

2.编译中间件(.o文件,moc,makefile文件)生成路径

在qt项目配置构建目录中,勾选shadow build,配置编译中间部件生成路径,如.o文件,moc等文件

这样编译生成的中间部件就不会影响项目了,统一生成到一个默认路径

如果不勾选配置 shadow build,就需要在pro文件中配置编译中间件的生成路径,避免混乱

如果什么都不配置,默认就都生成在当前pro目录下,很乱

配置好了之后,如下,这样管理就很方便了

http://www.lqws.cn/news/95221.html

相关文章:

  • Git 常用命令 - 服务器用
  • LangChain系列之LangChain4j集成Spring Bot
  • es 的字段类型(text和keyword)
  • https(SSL)证书危机和可行的解决方案
  • 软考 系统架构设计师系列知识点之杂项集萃(79)
  • (10)Fiddler抓包-Fiddler如何设置捕获Firefox浏览器的Https会话
  • 进阶配置与优化:配置 HTTPS 以确保数据安全传输
  • HttpServletResponse 对象用来做什么?
  • Linux 下 ChromeDriver 安装
  • React前端框架
  • isp调试 blend模式指什么
  • XCTF-web-ics-05
  • JavaScript性能优化实战:从核心原理到工程实践的全流程解析
  • 从0开始使用 Vue3 和 TypeScript 搭建项目详细教程
  • 在 Vite 中如何处理静态资源
  • 【论文阅读】Dolphin: Document Image Parsing via Heterogeneous Anchor Prompting
  • 【python与生活】用 Python 从视频中提取音轨:一个实用脚本的开发与应用
  • 八.MySQL复合查询
  • 对老项目进行node升级兼容
  • 生产环境MYSQL常见锁表场景
  • Vue3 中使用 i18n
  • 08.MySQL复合查询详解
  • 可视化大屏工具对比:GoView、DataRoom、积木JimuBI、Metabase、DataEase、Apache Superset 与 Grafana
  • LeetCode第244题_最短单词距离II
  • C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
  • Java复习Day26
  • 登高架设作业实操考试需要注意哪些安全细节?
  • Docker 镜像深度剖析:构建、管理与优化
  • 基于langchain的简单RAG的实现
  • AXURE安装+汉化-Windows