shadow build:
[基础]Qt Creator 的 Shadow build(影子构建)-CSDN博客
影子构建:将源码路径和构建路径分开(生成的makefile文件和其他产物都不放到源码路径),以此来保证源码路径的清洁。
实验1:
我创建了两个项目:test和test1
不勾选的话:(test)
勾选的话:(test1)
观察生成的文件结构之间的区别:
test:
test1:
QT 指定程序编译生成文件的位置_qt生成文件到指定路径-CSDN博客
基础知识:
1.MOC_DIR +=: moc文件存放的位置
在项目构建过程中,如果包含QObject派生类,Q_OBJECT宏等元对象相关的代码,moc.exe会对这些文件进行处理,输出一个新的C++源代码文件,其中包含清单QObject类和元对象的所有信息,生成的文件一般以moc为后缀。
2.RCC_DIR +=:资源文件编译后存放的位置。
在项目构建过程中,资源文件通过rcc.exe处理后,生成后缀为.cpp的文件。为什么要这样处理呢?
因为资源文件并不能被C++编译器所识别,rcc.exe是Qt工具链中的一个工具,用于将资源文件编译为用于访问这些资源的C++代码,它会将资源文件转换为一个.cpp文件,其中包含了资源数据的定义和访问函数。这个生成的.cpp文件可以在应用程序的构建过程中被编译,生成一个二进制的.o目标文件,并最终被链接到应用程序中。
3.OBJECTS_DIR +=:存放编译中间产物(object文件)的目录
生成编译中间产物的过程是通过多个工具和可执行文件完成的,其中包括编译器(gcc,clang等)和链接器(MSVC,ld等),但没有一个特定.exe在全部过程中负责处理。生成编译中间产物的过程是为了将源代码转化为可执行文件或库文件。这个过程涉及编译源代码,处理元对象代码以及链接生成的目标文件和库文件,最终生成可以在计算机上运行的可执行文件或库文件。
4.UI_DIR +=: UI文件编译后存放的位置
在项目构建过程中,ui文件通过uic.exe处理后,生成后缀为.h或.cpp的文件。理由同上面的一样,因为C++编译器并不能识别QT的ui文件,所有要通过uic工具解析用户界面文件,生成对应的C++文件。
具体案例:
# 指定构建目录位置CONFIG(debug , debug | release){DESTDIR += $$PWD/bin/Debug
}else{DESTDIR += $$PWD/bin/Release
}OBJECTS_DIR += $$DESTDIR/obj
MOC_DIR += $$DESTDIR/moc
RCC_DIR += $$DESTDIR/rcc
UI_DIR += $$DESTDIR/ui
这里的$$PWD,即当前目录,即.pro所在的目录