我一直在使用Qt Creator一段时间了,我的项目变得越来越大,我想转而使用Qt's SUBDIRS模板类型来更好地组织我不断增长的项目。
我的项目结构类似于以下
/master
|--- master.pro
`--- project1
| |--- project1.pro
| `--- ... (source files specific to project1)
`--- project2
| |--- project2.pro
| `--- ... (source files specific to project2)
`--- shared
`--- ... (source files shared between project1 and project2)
project1和project2都是独立的独立项目,但它们共享一些源/头文件,以方便共享文件夹中的可维护性。
我的大部分开发时间通常都花在了共享文件和project1上。因此,当我对共享文件进行更改时,project1和project2最终都必须更新以使用这些共享文件。
我的问题是,我刚刚对共享文件和project1进行了更改,但还没有更新project2。我如何从QtCreator运行project1以便我可以测试我的更改?显然,在每天/每周/每月结束时,我会修复project2来处理这些更改,但是我如何同时运行project1?
如果我右键单击project1,它会显示“运行”选项。但是,要在此处工作,整个“master.pro”必须能够无错误地编译。
我知道作为一种解决方法,我可以自己加载project1.pro,但是我想加载master.pro并从子项目中运行它。
对此的任何帮助将不胜感激。
答案 0 :(得分:3)
并非所有项目都准备好运行代码,我如何选择一个项目 运行,有子目录项目吗?
您可以维护多个TEMPLATE = app
项目来启动部分代码,例如,所选库的单元测试以及整个应用GUI启动器。并尝试在TEMPLATE = lib
类型的项目中尽可能多地分离共享代码。 lib
类型的项目是需要是静态库还是动态DEFINES += SHAREDLIB_LIBRARY
是另一个问题,答案取决于您如何分发应用程序。我维护我当前的subdir
项目,其中包含许多动态库,以防止它们因内存限制而一直链接到可执行文件。
打开“项目”菜单,确保“运行配置”指向包含主要功能的应用程序项目,并具有:
# app.pro file contains
TEMPLATE = app
以及
# unit_test1.pro file contains
TEMPLATE = app
如果您的某些项目无法编译,请将其从subdirs
项目中排除:
TEMPLATE = subdirs
SUBDIRS = lib unit-test
# SUBDIRS = lib unit-test app # app not ready
# app.depends = lib # may exclude dependcies
unit-test.depends = lib
请在下面选择已启动项目:
P.S。不要忘记在项目文件更改后运行qmake。
答案 1 :(得分:0)
只需创建您的“主应用”。然后从这些应用程序编辑.pro文件:
TEMPLATE = subdirs
但在你做任何其他事情之前!这很重要!
您可以 删除所有源文件
SOURCES += \ ...
HEADERS += \ ...
FORMS += \ ...
etc
但这是你的主应用程序!只是简介!好的,和yourappname.pro.user ;-) 稍后你可以添加f.e.一个窗口应用程序。
然后你可以创建另一个项目,例如。一个DLL。对于这个新的子项目,您可以选择您想要的任何目录: - )
对于添加:单击“master-app”右键,然后从上下文菜单中选择“添加子项目”。
最后一步,在关闭“新子项目对话框”之前,您应该在组合框中选择主项目。
就是这样!更多不是必须的