我花了很多时间思考如何为Qt C ++项目组织一个好的模块化结构。不幸的是,我没有找到一个完整的示例来说明如何正确地做(我遗漏了什么吗?),因此我正在寻找建议。到目前为止,我有以下假设:
我想为模块提供单独的目录,因为它们每个都可以在sevaral应用程序中使用。
我想对每个模块进行单元测试。
我还认为,在模块文件夹内进行keepng测试是一个不错的决定,因为如果我要移动或重命名模块,则不会有任何问题,因为我可以在测试中使用指向模块源的相对路径。
所以我想要的项目结构如下所示:
|project_root |src src.pro (TEMPLATE = subdirs) |apps apps.pro (TEMPLATE = subdirs) |my_app my_app.pro (TEMPLATE = app) main.cpp ... |modules modules.pro (TEMPLATE = subdirs) |my_module my_module.pro (TEMPLATE = ???) |tests tests.pro (TEMPLATE = subdirs) |MyClass1Test MyClass1Test.pro (TEMPLATE = app) tst_myclass1test.cpp |MyClass2Test MyClass2Test.pro (TEMPLATE = app) tst_myclass2test.cpp MyClass1.h MyClass1.cpp MyClass2.h MyClass2.cpp
我的第一个问题是-在Qt Creator的逻辑范围内此结构是否良好?我做错了什么吗?
我的第二个问题是关于my_module.pro的实现。我应该在这里使用哪个模板?我正在研究四种类型的项目模板:subdirs,lib,aux和我无法按上述方式组织我的模块结构(这就是为什么我要寻找逻辑错误的原因)。这有一些原因:
如果我使用TEMPLATE = subdirs
my_module.pro,Qt Creator将无法识别其中的任何文件(MyClass1.h,MyClass1.cpp,...从项目结构分解器),并且我将无法再构建库
如果使用TEMPLATE = lib
或TEMPLATE = aux
,则无法在此文件夹中创建测试子项目
因此,我的第三个问题是:如何以一种好的方式组织我的项目来克服这些问题?