【问题标题】:Cmake not changing permission of file installedCmake不更改已安装文件的权限
【发布时间】:2016-09-27 18:23:29
【问题描述】:

我正在尝试更改安装在 Cmake 中的文件的权限,但它不起作用。我似乎在做他们在discussion of permission changing 讨论的事情,我第一次编辑文件时文件的权限是错误的,并且无法应用更改(然后它会神奇地修复它自己的权限,以便下次保存它) .

    configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.vcxproj.in
                   ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.vcxproj)
    file(COPY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.vcxproj
       DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
       FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
       )

我尝试像install 一样执行此操作,但收到一条错误消息....在安装时执行此操作时出现错误消息,指出文件不存在,但它显示了文件应该位于的位置.也许那时还没有安装。

【问题讨论】:

  • 我不确定file(COPY) 是否可以根据需要就地更改文件的权限。请注意,您提到的讨论使用${CMAKE_FILES_DIRECTORY} 作为配置文件目录的附录,因此file(COPY) 实际上复制了文件。
  • 但是它应该在复制文件时给予不同的权限。对我来说,直到我第一次尝试保存文件后权限才会改变。
  • 同样,file(COPY) 应该仅在目标文件与源文件不同时才有效。当目标和源是相同的文件时,您希望此命令“就地”替换权限。
  • 那么您建议如何更改该文件的权限?
  • 正如您的参考建议,configure_file 进入其他目录,然后file(COPY) 进入理想位置。在这种情况下,设置权限应该可以工作。

标签: windows visual-studio cmake


【解决方案1】:

感谢@Tsyvarev 的讨论,我们确定配置必须将文件放在与副本获取文件不同的位置才能使权限更改生效,因此我添加了一个临时目录:

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.vcxproj.in
    ${CMAKE_CURRENT_BINARY_DIR}/temp/${PROJECT_NAME}.vcxproj)
    file(COPY ${CMAKE_CURRENT_BINARY_DIR}/temp/${PROJECT_NAME}.vcxproj DESTINATION ${CMAKE_CURRENT_BINARY_DIR}
       FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
       )

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    相关资源
    最近更新 更多