【发布时间】:2018-04-22 05:34:32
【问题描述】:
我正在 Qt 中创建大型项目。我在那里创建了子项目。我的问题是构建目的地。我将像这样简化我的问题:
我必须构建库和二进制文件。我的库有以下 Qt 项目设置:
TARGET = MyLib
CONFIG(debug, debug|release) {
TARGET.path = $$OUT_PWD/MyProject/debug
} else {
TARGET.path = $$OUT_PWD/MyProject/release
}
INSTALLS += TARGET
#DESTDIR += TARGET
TEMPLATE = lib
我的可执行二进制文件具有以下 Qt 项目设置:
TARGET = MyExecutable
CONFIG(debug, debug|release) {
TARGET.path = $$OUT_PWD/MyProject/debug
} else {
TARGET.path = $$OUT_PWD/MyProject/release
}
INSTALLS += TARGET
#DESTDIR += TARGET
TEMPLATE = app
LIBS += -L$$OUT_PWD/MyProject/... -lMyLib (row is different, but it is not important now)
具有这些设置的编译器 VS2017 在以下位置创建输出:
$$OUT_PWD/MyLib/debug/MyLib.dll
$$OUT_PWD/MyLib/release/MyLib.dll
$$OUT_PWD/MyExecutable/debug/MyExecutable.exe
$$OUT_PWD/MyExecutable/release/MyExecutable.exe
我想要输出如下:
$$OUT_PWD/MyProject/debug/MyLib.dll
$$OUT_PWD/MyProject/release/MyLib.dll
$$OUT_PWD/MyProject/debug/MyExecutable.exe
$$OUT_PWD/MyProject/release/MyExecutable.exe
我想要这样的输出的原因,我想调试从可执行文件跳转的库。 MyExecutable.exe 现在无法执行,因为它在正确的路径中没有 MyLib.dll。如果我将两个项目放在一起:
DESTDIR += TARGET
名为“TARGET”的文件夹将创建如下:
$$OUT_PWD/MyExecutable/TARGET/MyExecutable.exe
$$OUT_PWD/MyLib/TARGET/MyLib.dll
我现在正在为 Windows 做测试解决方案,但将来该项目应该是多平台的。我觉得我对计算机编程来说太老了......
【问题讨论】:
-
在根目录定义目标路径环境变量并使用它:stackoverflow.com/questions/7754218/… 注意范围取决于语法。我想你最好选择一个在 QMake 阶段可用的,但是每个嵌套的 .pro 文件都应该将它分配给局部变量。感觉和使用qmake产品的VS更兼容。
-
您指定的不是构建目标,而是安装目标。在默认构建之后,您还必须构建
install目标。