Ser*_*kov 14 qt qmake qt-creator
绝对的道路是荒谬的.我们需要的所有东西 - 顺便说一下,我们所允许的 - 是使用与包含.pro文件的文件夹相同级别的文件夹进行阴影构建.否则会有错误.
但你不能只../mingw_debug举例说明.是的,这是相对的路径,但相对于什么?事实证明它与Qt Creator的当前目录相关,这完全没有意义.
%{sourceDir}也没有任何帮助.%{sourceDir}/../mingw_debug不要工作,至少在Windows上.如果有办法从sourceDir中提取父文件夹!
有人知道解决问题的方法吗?
不完全是影子构建,因为 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
Run Code Online (Sandbox Code Playgroud)
因此,您可以将所有对象、moc、gui 文件放在单独的目录中(例如 libcommon/build/program-desktop-debug/moc),并将二进制文件放在相同的目录中,但名称不同。要触发一个或另一个构建,您只需在构建目标中设置 CONFIG+= 即可。最好的一点是,此结构仅取决于 pro 文件,您可以将其部分内容放在 common.pri 中并将其用于所有项目。不再需要影子构建配置。顺便说一句,pro 文件应该驻留在 libcommon/libcommon.pro 中。
| 归档时间: |
|
| 查看次数: |
7811 次 |
| 最近记录: |