如何在Qt Creator中创建一个好的模块化项目结构

时间:2017-01-21 19:06:48

标签: c++ qt

我花了很多时间思考如何为我的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 ,我无法像上面那样组织我的模块结构(这就是我寻找逻辑错误的原因) 。有一些原因:

  • 如果我对my_module.pro使用TEMPLATE = subdirs,Qt Creator无法识别其中的任何文件(MyClass1.h,MyClass1.cpp,...来自项目结构的消失器),我无法构建不再是图书馆
  • 如果我使用TEMPLATE = libTEMPLATE = aux,那么我无法在此文件夹中创建测试子项目

所以我的第三个问题是:如何以良好的方式组织我的项目以克服这些问题?

0 个答案:

没有答案