小编mar*_*arm的帖子

如何使用qmake在c ++中创建分层项目结构

在使用MinGW,C++ 11,Qt 5和qmake的Windows下我有以下项目结构:

/my-project
   my-project.pro
   /my-app
      my-app.pro
      main.cpp
   /module-a
      module-a.pro
      modulea.h
      modulea.cpp
   /module-b
      module-b.pro
      moduleb.h
      moduleb.cpp
Run Code Online (Sandbox Code Playgroud)

模块之间的依赖关系应如下所示:

my-app ==> module-a ==> module-b
Run Code Online (Sandbox Code Playgroud)

我想要实现的是my-app使用module-a,module-a使用module-b而my-app对module-b一无所知.模块-a仅通过其实现引用模块-b(#includefor module-b位于module-a的.cpp中).

我试图通过在qmake中将module-a和module-b配置为静态库来实现这一点.不幸的是,在编译时我收到链接器错误,说"对ModuleB :: doSmthB()的未定义引用"

我理解这个链接问题的原因,我的问题是,是否有可能实现类似于提议的分层结构的东西?

资料来源:

my-project.pro:

TEMPLATE = subdirs
SUBDIRS += module-b
SUBDIRS += module-a
SUBDIRS += my-app
my-app.depends = module-a
module-a.depends = module-b
Run Code Online (Sandbox Code Playgroud)

my-app.pro:

QT += widgets
TARGET = my-app
TEMPLATE = app
CONFIG += c++11
SOURCES += *.cpp
win32 {
    INCLUDEPATH += $$clean_path($$PWD/../module-a)
    DEPENDPATH += $$clean_path($$PWD/../module-a)
    LIBS += $$clean_path($$OUT_PWD/../module-a/debug/libmodule-a.a)
    PRE_TARGETDEPS += $$clean_path($$OUT_PWD/../module-a/debug/libmodule-a.a) …
Run Code Online (Sandbox Code Playgroud)

c++ qt qmake modularity project-structure

6
推荐指数
1
解决办法
417
查看次数

标签 统计

c++ ×1

modularity ×1

project-structure ×1

qmake ×1

qt ×1