Qt Remote Object(QtRO)解决找不到rep_xx_source.h或rep_xx_replica.h的终极方法
手动生成rep_xx_source.h或rep_xx_replica.h的方法
在用的时候,发现一些问题,我的Qt Creator版本是5.14.1,在使用Qt Remote Object(QtRO),发现几个影响rep_xx_source.h或rep_xx_replica.h生成的问题。
关于.rep书写的格式,参照官方文档:Qt Remote Objects Compiler
REPC_REPLICA = media.rep \
location.rep
生成的文件命名格式为:
rep_<replica file base>_replica.h
REPC_SOURCE = media.rep \
location.rep
生成的文件命名格式为:
rep_<replica file base>_source.h
REPC_REPLICA 和 REPC_SOURCE 这两个后加的文件路径是相对于pro文件的,而不是pri文件的,这点要注意,因为我把些放到了pri里,用$$PWD来写相对pri路径,发现怎么都不行,放到pro文件里就可以了。最后确定是路径编写问题,不管你的REPC_REPLICA 和 REPC_SOURCE放都在pro还是pri里,其文件的路径都是相对于pro的,这点切记。
第二点:
关于生成的.h文件名的说明举例:
比如你的rep文件名为:CommonInterface.rep
那么生成的rep_CommonInterface_replica.h和rep_CommonInterface_source.h
这里我遇到了问题,只生成了rep_CommonInterface_replica.h,没有生成rep_CommonInterface_source.h。
然后我手动去生成它。
repc命令的位置和参数
位置在D:\Qt\Qt5.14.1\5.14.1\mingw73_64\bin\ repc.exe,根据个人的Qt目录和编译器版本,找个这个repc.exe很容易
repc.exe的参数都在这里:
Options:
-?, -h, --help Displays help on commandline options.
--help-all Displays help including Qt specific options.
-v, --version Displays version information.
-i <rep|src> Input file type:
rep: replicant template files.
src: C++ QObject derived classes.
-o <source|replica|merged|rep> Output file type:
source: generates source header. Is
incompatible with "-i src" option.
replica: generates replica header.
merged: generates combined replica/source
header.
rep: generates replicant template file from
C++ QOject classes. Is not compatible with "-i
rep" option.
-I <dir> Add dir to the include path for header files.
This parameter is needed only if the input
file type is src (.h file).
-c Always output `class` type for .rep files and
never `POD`.
-d Print out parsing debug information (for
troubleshooting).
Arguments:
[header-file/rep-file] Input header/rep file to read from, otherwise
stdin.
[rep-file/header-file] Output header/rep file to write to, otherwise
stdout.
手动生成rep_XX_replica.h
repc CommonInterface.rep -o replica -c rep_Commoninterface_replica.h
看一眼生成的文件,类名是CommonInterfaceReplica
手动生成rep_XX_source.h
repc CommonInterface.rep -o source -c rep_Commoninterface_source.h
这两文件都手动生成好了,把它们拷贝到Rep文件相同目录中,感觉这个是有些版本的编译的锅,它应该是根据pro或者pri文件帮我们自动生成的,而不是手动生成,这么不方便。
本文地址:https://blog.csdn.net/hp_cpp/article/details/107252649