如何在CMake中實現以下功能(使用版本2.8.5)?我有一個由名爲doc
的自定義目標生成的文檔,我希望在安裝或CPacking時將其輸出。如何告訴CMake安裝目錄取決於僞目標?
add_custom_target(doc "${DOXYGEN_EXECUTABLE}" Doxyfile)
install(DIRECTORY ${CMAKE_BINARY_DIR}/doc DESTINATION doc)
的Doxyfile
告訴Doxygen的放出來的文檔在${CMAKE_BINARY_DIR}/doc
。
如果我做這個build目錄:
make doc
cpack
東西正常工作,因爲第一行創建在其上install
目標所依賴的目錄。
但是,如果我有一個新的版本(所以${CMAKE_BINARY_DIR}/doc
還不存在),我直接調用CPack:
cpack
那麼它抱怨找不到${CMAKE_BINARY_DIR}/doc
:
CMake Error at <snip>/build/cmake_install.cmake:36 (FILE):
file INSTALL cannot find "<snip>/build/doc".
我也試過以下內容:
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/doc COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_BINARY_DIR}/Doxyfile)
install(DIRECTORY ${CMAKE_BINARY_DIR}/doc DESTINATION doc)
但我仍然得到相同的CPack錯誤,並且在構建目錄中執行make doc
也不起作用。
所以,如果我做make doc
前cpack
手動將其與配置工作在這個崗位上,但我怎麼能告訴cmake的/ cpack的install
指令依賴於自定義的目標doc
,使建築的文檔發生自動撥打電話cpack
或make install
?
謝謝!
謝謝,這確實是一個可能的解決方案。但是,'ALL'關鍵字始終會導致目標被建立。在這種情況下,這不是問題,但我仍然對通用解決方案感興趣,我可以在安裝目標(隱含地取決於'ALL')和我的自定義目標之間添加顯式依賴關係。 –
@ysnikraz我已經更新了我的答案。不幸的是,cmake沒有明確的方式來設置定製和內置目標之間的依賴關係。 –
非常感謝您的更新和解決方法!只是測試它,它運作良好。正是我在找什麼! –