如何自定义moc和uic生成的文件的扩展名 – cmake篇

cmake官方文档同样没有涉及,在邮件列表中讯问后,查看相应文件找到了解决方案。

针对QT4_WRAP_CPP和QT4_WRAP_UI还有资源文件:

cmake下的Modules/FindQt4.cmake文件中如下三行在起作用:

SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/moc_${outfile}.cxx)
SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/ui_${outfile}.h)
SET(outfile ${CMAKE_CURRENT_BINARY_DIR}/qrc_${outfilename}.cxx)

针对QT4_AUTOMOC方式,需要修改这两行:

STRING(REGEX MATCHALL "#include +[^ ]+\.moc[">]" _match "${_contents}")
STRING(REGEX MATCH "[^ <"]+\.moc" _current_MOC "${_current_MOC_INC}")

需要把其中的.moc换成.myown什么的。当然QT4_AUTOMOC的方式就是需要在你的源代码最后加入一行include的,还要做一个修改:

#include "yourclass.moc"

要改为:

#include "yourclass.myown"

不过这一次看来cmake要强大好多呀,完全可以自定制。