什么是使用插件设置QT-Subdir项目的好方法? (outputdir /包括)

时间:2018-04-29 12:28:24

标签: qt

我的问题在子问题中被忽略了,但由于所有这些问题都涉及到subir-projekt设置的相同缺点,而且一些决定可能会影响其他问题,我会在一个帖子中询问所有问题。

1)我可以避免使用相同的库在每个部分中编写相同的包含ines。

INCLUDEPATH += $$PWD/../MyLib1    # add header for usage
# Adds the QtQuickSampleLib.lib to the linker
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../MyLib1/release/ -lMyLib1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../MyLib1/debug/ -lMyLib1

2)如何设置输出路径,因此可以轻松加载dynamic-libs和Plugins。 3)接口定义是否可以放置在单独的项目中,生成静态输出以便我可以轻松导入它?

据我所知,Sourceprojekt-Folders可以像这样设置:

MainProjekt
+Main-Runner <generates the ELF>
+CoreLib (Most logic in a Lib for easyer tests, might make it a Plugin)
| +SRC
| +Test
+PluginInterface (currently .pri file)
+Plugins
| +PluginA
| | +SRC (Most logic in a Lib for easyer tests)
| | +Test
| +PluginB
| | +SRC (Most logic in a Lib for easyer tests)
| | +Test
| +PluginC <Depends on PluginA & PluginB being loaded>
| | +SRC (Most logic in a Lib for easyer tests)
| | +Test

PS:理想是这样的:

PluginA是hardwareInteraction(如果可能的话,有一个&#34;伪版本&#34;用于PluginC中的测试)

PluginB处理可见的Data-Modell

PluginC是一个与硬件对话并写出数据的控制系统。

1 个答案:

答案 0 :(得分:1)

诀窍是创建一个顶级.qmake.conf文件并使用它来定义全局路径:

CONFIG += c++11 #example, now it is set in every pro file
PROJ_VERSION = 1.0.0

OUT_ROOT = $$shadowed($$PWD)
LIB_OUT = $$OUT_ROOT/lib
PLG_OUT = $$OUT_ROOT/plugins
# ...

在MainProject文件夹中将该文件创建为.qmake.conf。只要您使用MainProject.pro文件编译项目,它也用于所有子pro文件(递归)

现在提出实际问题:

1。)在项目根文件夹中创建一个小的pri文件:

INCLUDEPATH += $$PWD/MyLib1
win32:CONFIG(release, debug|release): LIBS += -L$$LIB_OUT -lMyLib1
else:win32:CONFIG(debug, debug|release): LIBS += -L$$LIB_OUT -lMyLib1d

您可以将其包含在需要它的所有子项目中。 $$PWD始终是pri文件目录本身,而不是它所包含的位置。 $$LIB_OUT取自.qmake.conf

2。)您可能已经注意到我在conf文件中定义了一些变量。您现在可以在实际专业文件中将这些用作DESTDIR。例如,在您的lib pro文件中,您可以使用:

VERSION = $$PROJ_VERSION  #optionally use the globally defined version
DESTDIR = $$LIB_OUT

你可以对插件,二进制文件等做同样的事情。