我是否需要 Qt 工具链来定位使用 Qt 构建的库?

Do I need the Qt toolchain to target a library built with Qt?

有必要使用 Qt 工具链(pro 文件、qmake 等...),以便 link 针对使用 Qt 实现和构建的库,但它本身仅公开 C 风格API? None 的 Qt 特定 类 在库中使用。

该问题适用于静态库和动态库。

Is is necessary to use the Qt tools in order to link against a library that was implemented with Qt.

绝对不是。


生成代码的Qt工具有mocrcc;如果您的 API 不使用它,那么很可能只使用普通的 'C' 工具。

moc 是信号和槽的工具,甚至 C++ 代码也不需要使用 Qt 工具来 link 针对 Qt 库。您可以在 make 规则中使用 grep 等扫描 'header' 以获得 MOC 宏,以了解 moc 程序是否应该 运行可执行。遵循 class.ccclass.h 中声明的约定使这变得容易。

rcc 是一项将资源与应用程序捆绑在一起的功能。但是,这适用于 Qt application/library,在您的情况下,您只想 link 使用它。

因此,甚至可以在没有 qmake 的情况下制作 Qt applications/libraries,等等。但是,您的 makefile 将需要满足所有可移植性问题qmake,等等,或者你可能不关心这个。

不使用 Qt 工具需要权衡取舍。但是,大部分 Qt 功能都可以在没有工具的情况下使用。