绝对路径是荒谬的。我们需要的所有东西 - 顺便说一下,我们所允许的 - 是使用与包含.pro文件的文件夹相同级别的文件夹进行阴影构建。否则会有错误。
但您不能仅指定../mingw_debug
。是的,这是相对的路径,但相对于什么?事实证明它与Qt Creator的当前目录相关,这完全没有意义。
%{sourceDir}
也无济于事。至少在Windows上,%{sourceDir}/../mingw_debug
不起作用。如果有办法从sourceDir中提取父文件夹!
有人知道解决问题的方法吗?
答案 0 :(得分:2)
至少在Qt Creator 3.6.1中,这是固定的 - 相对路径工作正常。解决的完整路径显示在工具提示中。我不知道在过去的几年里这是什么时候已经解决了。
答案 1 :(得分:0)
不完全是阴影构建,因为qt-creator定义了它们,但我使用以下内容来获得整洁的构建结构。
摘自我为多个目标构建的库的专业文件 在测试模式中。
TARGET = ../lib/common
message("libcommon:")
contains(CONFIG,test){
message("Building Test")
DESTDIR = test
TARGET = $$TARGET-test
}else{
message("Building Program")
DESTDIR = program
TARGET = $$TARGET
}
contains(MEEGO_EDITION,harmattan){
message("Maemo Harmattan")
DESTDIR = $$DESTDIR-maemo6
TARGET = $$TARGET-maemo6
DEFINES += MAEMO MAEMO6
}
unix:!maemo5:!contains(MEEGO_EDITION,harmattan){#desktop
message("Desktop")
DESTDIR = $$DESTDIR-desktop
TARGET = $$TARGET-desktop
}
contains(CONFIG,test){
TEMPLATE = app
SOURCES += $$files(src_test/main.cpp)
HEADERS += $$files(src_test/*.h)
INCLUDEPATH += src_test
}else{
TEMPLATE = lib
CONFIG += staticlib
}
CONFIG(debug, debug|release) {
message("Debug")
DESTDIR = $$DESTDIR-debug
CONFIG += debug
DEFINES += DEBUG
TARGET = $$TARGET-debug
}else{
message("Release")
//DEFINES += QT_NO_DEBUG_OUTPUT
DESTDIR = $$DESTDIR-release
TARGET = $$TARGET-release
}
MOC_DIR = build/$${DESTDIR}/moc
OBJECTS_DIR = build/$${DESTDIR}/obj
UI_DIR = build/$${DESTDIR}/ui
因此,您可以将所有对象,moc,gui文件放在不同的目录中(例如libcommon / build / program-desktop-debug / moc),并使用不同名称的二进制文件。要触发一个或另一个构建,只需在构建目标中设置CONFIG + =。最好的是这个结构只取决于专业文件,你可以将它的一部分放在common.pri中,并将它用于你的所有项目。不再需要阴影构建配置。顺便说一句,pro文件应该驻留在libcommon / libcommon.pro中。
答案 2 :(得分:0)
有几件事可以用来使这个易于管理:
$$_PRO_FILE_PWD_
(版本> = 4.5)变量包含正在读取的当前专业文件的目录。
使用项目根目录中的.qmake.cache
文件,并为目录定义变量:
PROJECT_DIR = $$PWD
然后使用它从根目录开始导航。
答案 3 :(得分:0)
我正在*.pro
文件中使用此代码,看来工作正常。
CONFIG(debug, debug|release){
DESTDIR=$$shadowed($$ROOT_PWD)/debug
}else{
DESTDIR=$$shadowed($$ROOT_PWD)/release
}