关于Qt项目配置,项目编译生成的库文件路径详解
1.默认生成路径
默认情况下,Qt 项目会在项目根目录下创建一个 构建目录,生成的库文件存储在构建目录的 debug
或 release
子目录中。路径结构如下:
项目根目录/
├── 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目录下,很乱
配置好了之后,如下,这样管理就很方便了