2012-07-06 24 views
2

我目前正在嘗試設置CMake來自動生成我的Doxygen文檔。我目前使用下面的代碼。只在CMake中安裝一些東西,如果自定義目標是

find_package(Doxygen) 
if (DOXYGEN_FOUND) 
    configure_file("docs/Doxyfile.in" "${PROJECT_BINARY_DIR}/Doxyfile") 
    add_custom_target(docs 
         COMMAND ${DOXYGEN_EXECUTABLE} 
           "${PROJECT_BINARY_DIR}/Doxyfile" 
         SOURCES "${PROJECT_BINARY_DIR}/Doxyfile") 
    install(DIRECTORY "${PROJECT_BINARY_DIR}/docs/" 
      DESTINATION "docs") 
endif() 

它的工作原理,當你進入make docs它產生PROJECT_BINARY_DIR/docs的文檔中的罰款。當您輸入make install時,它將docs子目錄複製到CMAKE_INSTALL_PREFIX。然而,當用戶不希望生成文檔,只是類型make install出現以下錯誤:

CMake Error at cmake_install.cmake:36 (FILE): 
    file INSTALL cannot find "/home/lukas/workspace/TheGame/build/docs". 

一個人怎麼可以指示install命令才能執行,如果一個自定義的目標(docs)建立(或者如果子目錄docs存在於PROJECT_BINARY_DIR)?

回答

6

您是否嘗試過使用OPTIONAL標誌?

install(DIRECTORY "${PROJECT_BINARY_DIR}/docs/" DESTINATION "docs" OPTIONAL) 
+0

這是有效的,但真的沒有辦法讓它依賴於特定的目標嗎? – patrickvacek 2018-02-08 11:02:11

+1

@patrickvacek有關替代解決方案,請參閱https://stackoverflow.com/questions/8636479/postpone-making-custom-target-until-install – sakra 2018-02-10 09:21:01

相關問題