提供一个通用的Qt pro工程配置
#-------------------------------------------------
#
# PS:应将此配置放置在pro文件的最后, 否则可能会不起作用
# PS:示例中的 contains 可以替换为 equals, 行后面的 { 一定不要换行,否则不能识别
#
# 以下配置为程序输出目录配置模板, 根据需要自行修改
# 其中, 默认认为整个工程使用SubDir工程, 且子工程为非SubDir工程.
# 如有不同, 请根据情况进行修改
#
#
# 主要就是配置 TARGET(目标名字) 以及 DESTDIR(目标目录), DLLDESTDIR(动态库自动复制目录)
# 将TARGET在debug状况下加上d后缀
# 将DESTDIR设置到bin目录下,而在目标为动态库时修改为放入lib目录下
# 将DLLDESTDIR设置为bin目录, 用于将动态库的自动发布复制
#
# 配置后, release以及debug目录将会出现在目标路径的output文件夹下
# 并且会将子工程的ui生成文件放入子工程相应的ui目录下
#
#-------------------------------------------------
#设置UI文件目录
UI_DIR = ./ui
CONFIG(debug, debug|release) {
#设置debug配置下编译生成文件的路径
TARGET = $$join(TARGET,,,d) #为debug版本生成的文件增加d的后缀
contains(TEMPLATE, "lib") {
DESTDIR = ../output/debug/lib #将库放在lib文件夹下
DLLDESTDIR = ../output/debug/bin #将动态库自动拷贝至bin目录下
} else {
DESTDIR = ../output/debug/bin #将应用程序放在bin目录下
}
OBJECTS_DIR = ./debug/obj #将生成的对象文件放在专门的obj文件夹下
MOC_DIR = ./debug/moc #将QT自动生成的对象放在moc文件夹下
} else {
#设置release配置下编译生成文件的路径
contains(TEMPLATE, "lib") {
DESTDIR = ../output/release/lib #将库放在lib文件夹下
DLLDESTDIR = ../output/release/bin #将动态库自动拷贝至bin目录下
} else {
DESTDIR = ../output/release/bin #将应用程序放在bin目录下
}
OBJECTS_DIR = ./release/obj #将生成的对象文件放在专门的obj文件夹下
MOC_DIR = ./release/moc #将QT自动生成的对象放在moc文件夹下
}
CONFIG(debug, debug | release){
equals(TEMPLATE, "app"){
DESTDIR = $$PWD/../build/debug/bin
}
equals(TEMPLATE, "lib"){
DESTDIR = $$PWD/../build/debug/lib
DLLDESTDIR = $$PWD/../build/debug/bin
}
}
CONFIG(release, debug | release){
equals(TEMPLATE, "app"){
DESTDIR = $$PWD/../build/release/bin
}
equals(TEMPLATE, "lib"){
DESTDIR = $$PWD/../build/release/lib
DLLDESTDIR = $$PWD/../build/release/bin
}
}
#//指定目标文件的输出目录
//32位
contains(QT_ARCH, i386){
CONFIG(release, release | debug){
DESTDIR = $$PWD/bin/x86/release
} else {
DESTDIR = $$PWD/bin/x86/debug
}
}
//64位
contains(QT_ARCH, x86_64){
CONFIG(release, release | debug){
DESTDIR = $$PWD/bin/x64/release
} else {
DESTDIR = $$PWD/bin/x64/debug
}
}
#//指定中间文件的生成路径
MOC_DIR = $$PWD/temp/$$TARGET/moc
RCC_DIR = $$PWD/temp/$$TARGET/rcc
UI_DIR = $$PWD/temp/$$TARGET/ui
OBJECTS_DIR = $$PWD/temp/$$TARGET/obj
BUILD_DIR = $$PWD/../bin/build //编译路径
BIN_DIR = $$PWD/../bin //二进制文件输出路径
TARGET = MediaManagerTest //目标文件名
CONFIG(debug, debug|release){
OBJECTS_DIR = "$$BUILD_DIR/debug/$$TARGET/obj"
RCC_DIR = "$$BUILD_DIR/debug/$$TARGET/rcc"
MOC_DIR = "$$BUILD_DIR/debug/$$TARGET/moc"
UI_DIR = "$$BUILD_DIR/debug/$$TARGET/ui"
DESTDIR = "$$BIN_DIR/debug"
}
CONFIG(release, debug|release){
OBJECTS_DIR = "$$BUILD_DIR/release/$$TARGET/obj"
RCC_DIR = "$$BUILD_DIR/release/$$TARGET/rcc"
MOC_DIR = "$$BUILD_DIR/release/$$TARGET/moc"
UI_DIR = "$$BUILD_DIR/release/$$TARGET/ui"
DESTDIR = "$$BIN_DIR/release"
}
QT工程文件的常见参数
- 如果指定
TEMPLATE
为lib
模板,且未指定CONFIG
为静态库或者动态库,则默认生成动态库