如何将qt4_wrap_cpp输出移动到文件夹?

时间:2012-10-05 15:59:11

标签: qt cmake

我已拨打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)

2 个答案:

答案 0 :(得分: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不熟悉。

答案 1 :(得分:1)

您可以使用qt4_wrap_cpp宏,而不是使用qt4_generate_moc,它会将单个文件作为moced并使用输出路径。使用此宏,您可以构造类似于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)