我已经使用 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 都是独立的独立项目,但是为了方便和可维护性,它们在共享文件夹中共享了一些源/头文件。
我的大部分开发时间通常都花在了共享文件和项目 1 上。因此,当我对共享文件进行更改时,project1 和 project2 最终都必须更新以使用这些共享文件。
我的问题是,假设我刚刚对共享文件和 project1 进行了更改,但尚未更新 project2。我如何从 QtCreator 运行 project1 以便测试我的更改?显然,在一天/一周/一个月结束时,我会修复 project2 以处理这些更改,但同时我将如何运行 project1?
如果我右键单击 project1,它会显示“运行”选项。然而,要在这里工作,整个“master.pro”必须能够无错误地编译。
我知道作为一种解决方法,我可以自己加载 project1.pro,但我想加载 master.pro 并从子项目运行它。
对此的任何帮助将不胜感激。
最佳答案
您可以维护多个 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
请注意以下已启动项目的“运行配置”选择:
附言不要忘记在项目文件更改后运行 qmake。
关于c++ - Qt Creator 如何运行 SUBDIRS 项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41514620/