2016-09-27 34 views
0

我试图更改安装在Cmake中的文件的权限,但它不工作。我似乎正在做他们在discussion of permission changing讨论的内容,第一次编辑它时,权限在文件上是错误的,它无法应用更改(然后它会在下次保存时修复它自己的权限)。Cmake不更改安装文件的权限

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,但得到的错误消息....在安装这样做有一个错误味精说文件不存在,但它显示该文件是应该的位置在...处。也许它还没有安装在那个点上。

+0

我不确定“文件(COPY)”可以根据需要更改文件的权限**。注意,你引用的讨论使用'$ {CMAKE_FILES_DIRECTORY}'作为配置文件目录的附录,所以'file(COPY)'**实际上复制了**文件。 – Tsyvarev

+0

但它应该在复制文件时赋予不同的权限。对我来说,只有在我第一次尝试保存文件之后,权限才会改变。 – Michele

+1

再一次,'file(COPY)'应该只在目标文件**与源文件**不同时才起作用。当目标和源是*相同的文件*时,您希望此命令替换“at place”处的权限。 – Tsyvarev

回答

0

感谢@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 
     )