繁体   English   中英

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

[英]Adding JSON file to plugin qmake project

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

不幸的是,在构建插件库时,默认情况下, qmake不会将关联的JSON文件视为库二进制文件的依赖项。 修改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

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

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

我自己尝试了一下,但从未成功,但文档中的配方仍然有效: INCLUDEPATH += JSON_FILE_LOCATION_DIR 的确,有时qmake缓存会构建,但是他们说添加include路径应该可以解决问题并进行正确的构建。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM