您可以使用OBJECTS_DIR和MOC_DIR变量.例如,Qt本身在构建时会做这样的事情:
OBJECTS_DIR = .obj
MOC_DIR = .moc
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我认为.obj,.moc目录是相对于包含Makefile的目录.
为了保持主(源)文件夹中没有二进制文件和生成的文件,您可以将以下行放入“myapp.pro”文件中:
DESTDIR = ../../bin
UI_DIR = .
CONFIG(debug, debug|release) {
TARGET = myappd
OBJECTS_DIR = ../../build/myapp/debug
MOC_DIR = ../../build/myapp/debug
}
CONFIG(release, debug|release) {
TARGET = myapp
OBJECTS_DIR = ../../build/myapp/release
MOC_DIR = ../../build/myapp/release
}
Run Code Online (Sandbox Code Playgroud)
上述设置意味着以下目录结构:
myprojects/source/myapp/ => containing myapp.pro + all other project files hpp, cpp etc.
myprojects/bin/ => containing myapp.exe & myappd.exe application files
myprojects/build/myapp/release => object files + moc files (release)
myprojects/build/myapp/debug => object files + moc files (debug)
Run Code Online (Sandbox Code Playgroud)
最后3个目录如果不存在会自动创建。
这种模式的优点是:
A。您可以将项目(myapp 目录)移动到另一个父目录,由于 bin 和构建目录的相对规范,它将继续构建正常
b. 您可以在 myprojects/source/ 下添加更多子项目
C。您可以备份(例如 ZIP)所有 myprojects/source/ 目录,而不包含任何二进制文件或生成的文件