我已经使用 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?

c++ - Qt Creator 如何运行 SUBDIRS 项目-LMLPHP

如果我右键单击 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

请注意以下已启动项目的“运行配置”选择:

c++ - Qt Creator 如何运行 SUBDIRS 项目-LMLPHP

附言不要忘记在项目文件更改后运行 qmake。

关于c++ - Qt Creator 如何运行 SUBDIRS 项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41514620/

10-11 23:02
查看更多