来自具有公共源文件的一个项目的多个共享库
multiple shared libraries from one project with common source files
我有一个可以通过动态加载的插件控制的主应用程序(win 上的 .dll - linux 上的 .so)。现在我想创建很多这样的插件,只是功能实现不同。
假设我的项目中有以下文件:
- plugin.h
- plugin.cpp
- i001.cpp
i001.cpp 包含我的插件 class 的 "run" 功能的一种实现。现在这个项目编译为 "plugin.dll".
我想要实现的是这样的:
- plugin.h + plugin.cpp + i001.cpp --> i001.dll
- plugin.h + plugin.cpp + i002.cpp --> i002.dll
- plugin.h + plugin.cpp + i003.cpp --> i003.dll
- plugin.h + plugin.cpp + i004.cpp --> i004.dll
有没有一种简单的方法可以从一个项目中获得这些输出?
我在 Windows 和 Linux 上都使用 Qt-Creator。
有两种方法可以解决问题。
您应该使用子项目。将您的公共源文件提取到单独的子项目中作为静态库。更多信息 here
您可以创建 .pri 文件:
SOURCES += plugin.cpp
HEADERS += plugin.h
并将其包含在所有 .pro 文件中:
include(deployment.pri)
我有一个可以通过动态加载的插件控制的主应用程序(win 上的 .dll - linux 上的 .so)。现在我想创建很多这样的插件,只是功能实现不同。
假设我的项目中有以下文件:
- plugin.h
- plugin.cpp
- i001.cpp
i001.cpp 包含我的插件 class 的 "run" 功能的一种实现。现在这个项目编译为 "plugin.dll".
我想要实现的是这样的:
- plugin.h + plugin.cpp + i001.cpp --> i001.dll
- plugin.h + plugin.cpp + i002.cpp --> i002.dll
- plugin.h + plugin.cpp + i003.cpp --> i003.dll
- plugin.h + plugin.cpp + i004.cpp --> i004.dll
有没有一种简单的方法可以从一个项目中获得这些输出? 我在 Windows 和 Linux 上都使用 Qt-Creator。
有两种方法可以解决问题。
您应该使用子项目。将您的公共源文件提取到单独的子项目中作为静态库。更多信息 here
您可以创建 .pri 文件:
SOURCES += plugin.cpp HEADERS += plugin.h
并将其包含在所有 .pro 文件中:
include(deployment.pri)