2012-10-05 21 views
0

我拨打了qt4_wrap_cpp(moc_outfiles ${moc_header}),我希望将该呼叫的结果(moc_outfiles)放在名为GeneratedFiles/Debug的文件夹中。如何将qt4_wrap_cpp输出移动到文件夹?

到目前为止,我试图让这失败,原因是分析错误Parse error. Expected "(", got quoted argument with text "${it}".

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

回答

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文件。

+0

此解决方案对我无效。我可能不了解CMake如何工作。是否在我运行CMake脚本并运行应该生成文件的项目之后? – andre

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) 
相关问题