2012-10-05 54 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) 
相關問題