0

我已经调用了qt4_wrap_cpp(moc_outfiles ${moc_header})并且我希望将该调用 ( moc_outfiles) 的结果放在一个名为GeneratedFiles/Debug.

到目前为止,我尝试制作自己的自定义方法,但由于解析错误而失败Parse error. Expected "(", got quoted argument with text "${it}".

FOREACH (it ${moc_headers})
    QT_MOC_EXECUTABLE ${it} -o ./GeneratedFiles/Debug/moc_"${it}"
ENDFOREACH(it)
4

2 回答 2

1

看起来你需要这个execute_process命令。此外,您可能不希望${it}在输出文件名中包含引号:

FOREACH(it ${moc_headers})
    EXECUTE_PROCESS(COMMAND ${QT_MOC_EXECUTABLE} ${it} -o ./GeneratedFiles/Debug/moc_${it})
ENDFOREACH(it)

您可能还需要添加WORKING_DIRECTORY参数 - 我不熟悉 Qt 的 moc exe。

于 2012-10-05T19:12:59.557 回答
1

qt4_wrap_cpp您可以使用宏来代替使用qt4_generate_moc,它需要一个要移动的文件和一个输出路径。使用此宏,您可以构建类似于所做的事情qt4_wrap_cpp

#qt4_wrap_cpp( moc_outfiles ${moc_headers} )
foreach(moc_hdr ${moc_headers})
  GET_FILENAME_COMPONENT(moc_name ${moc_hdr} NAME_WE)
  SET (moc_out ${PROJECT_SOURCE_DIR}/GeneratedFiles/moc_${moc_name}.cxx)
  QT4_GENERATE_MOC( ${moc_in} ${moc_out} )
  LIST (APPEND MOC_SOURCES ${moc_out})
endforeach(moc_hdr)
于 2015-04-15T16:21:42.410 回答