【问题标题】:What does the CMake error-message "install FILES given directory" mean?CMake 错误消息“安装给定目录的文件”是什么意思?
【发布时间】:2021-08-01 01:24:50
【问题描述】:

由于以下原因,我尝试配置 CMake 项目失败:

 CMake Error at CMakeLists.txt:42 (install):
   install FILES given directory
   "/home/steve/udunits2/build/lib/udunits2lib.html" to install.
 Call Stack (most recent call first):
   lib/CMakeLists.txt:47 (texi_doc)

顶级 CMakeLists.txt 文件中的第 42 行是

install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${file}.html" DESTINATION ${CMAKE_INSTALL_DOCDIR})

并且是从 .texi 输入构建 .info 和 .html 文件并安装它们的函数的一部分。 ${CMAKE_INSTALL_DOCDIR} 是“share/doc/udunits”。

这个错误消息是什么意思,我该如何解决这个问题?

【问题讨论】:

    标签: cmake


    【解决方案1】:

    源代码表明错误消息意味着install() 命令的FILES 参数是一个目录,而不是预期的常规文件。输出.html "file" 是一个目录的原因是因为我最初没有使用makeinfo(1)--no-split 选项。

    我的错。

    【讨论】:

      【解决方案2】:

      对我来说:

      install(
              FILES
              "${PROJECT_SOURCE_DIR}/test_hard1.h"
              "${PROJECT_BINARY_DIR}/config.h"
              # DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} #  error install FILES given no DESTINATION!
      
              # add include after DESTINATION, then it works
              DESTINATION include ${CMAKE_INSTALL_INCLUDEDIR}
      )
      

      【讨论】:

        【解决方案3】:

        CMake 卡在 TYPE parameter of install(FILES ...) 上。如果您运行的是旧版本的 CMake,或者您的 CMake 安装存在某种错误,则可能会发生这种情况。

        尝试如下添加TYPE

        install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${file}.html"
                TYPE INCLUDE
                DESTINATION ${CMAKE_INSTALL_DOCDIR})
        

        【讨论】:

          猜你喜欢
          • 2010-09-17
          • 2018-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多