只有在构建自定义目标时才在CMake中安装

Luk*_*sen 3 cmake

我正在尝试设置CMake以自动生成我的Doxygen文档.我目前使用以下代码.

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()
Run Code Online (Sandbox Code Playgroud)

它在你输入时工作正常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".
Run Code Online (Sandbox Code Playgroud)

install如果docs构建自定义target()(或者子目录docs存在于其中PROJECT_BINARY_DIR),如何指示仅执行命令?

sak*_*kra 7

你尝试过使用OPTIONAL标志吗?

install(DIRECTORY "${PROJECT_BINARY_DIR}/docs/" DESTINATION "docs" OPTIONAL)
Run Code Online (Sandbox Code Playgroud)