将 JSON 文件添加到插件 qmake 项目中



当使用Qt编写插件库时,可以使用Q_PLUGIN_METADATA宏将包含一些元数据的JSON文件附加到该文件。然后将此 JSON 文件链接到库中,以便以后与 QPluginLoader::metaData() 一起使用。

不幸的是,在构建插件库时,默认情况下,关联的 JSON 文件不会被视为库二进制文件的依赖项 qmake .修改 JSON 文件时,必须手动重建(尤其是重新链接)插件库项目,以强制将修改后的 JSON 文件放入库二进制文件中。

.pro文件中提及 JSON 文件以便在修改时自动链接该文件的正确方法是什么?

我通常使用以下方法使 json 文件成为包含相应代码的生成的 moc 文件的依赖项。假设您指定Q_PLUGIN_METADATA的类位于名为 myclass.h 的头文件中,qmake 代码如下所示:

DISTFILES += myclass.json
json_target.target = moc_myclass.o
json_target.depends += $$PWD/myclass.json
QMAKE_EXTRA_TARGETS += json_target

注意:如果之前已定义OBJECTS_DIR,则可能必须改用json_target.target = $$OBJECTS_DIR/moc_myclass.o。检查生成的Makefile以查看依赖项的路径是否与相应目标之一匹配。

好吧,您可以将 JSON 文件添加到资源中:创建一些*.qrc文件,在那里添加您的文件,然后在.pro文件中写入类似 RESOURCES += plugin_data.qrc .-还有DISTFILES变量,但 AFAIK 它是仅限 Unix 的,不能解决您的问题。

尝试了自己,但从未奏效,文档中的食谱仍然有效:INCLUDEPATH += JSON_FILE_LOCATION_DIR.确实,有时qmake缓存构建,但他们说添加到包含路径应该可以解决问题并进行适当的构建。

最新更新