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