Сохраняйте права на один файл при использовании функции install() в CMake

В KDE я скорректировал макрос для компиляции и установки файлов Python, но у меня возникла проблема с сохранением разрешений файлов.

Чтобы быть более понятным, строка оскорбления в макросе

install(FILES ${SOURCE_FILE} DESTINATION ${DESTINATION_DIR})

который работает в 99% случаев.

В одном случае, хотя у меня есть файл Python, помеченный как исполняемый файл (+ x, я говорю о Linux здесь) в исходном каталоге, который затем символически связан с установочным двоичным каталогом. Поскольку install() не сохраняет разрешения, бит выполнения удаляется из него, и это приводит к возникновению всех видов проблем позже.

Возможно ли сохранить права доступа к файлам или прочитать их и установить их соответствующим образом? Мне не хотелось бы использовать ручную команду chmod, так как она не переносима.

EDIT: я не хочу, чтобы все файлы были установлены этим исполняемым макросом, так как это было бы бессмысленно.

Ответ 1

Вы можете установить файлы с помощью разрешения +x, используя

install(PROGRAMS ...

команды.

В качестве альтернативы вы можете установить права доступа к файлам с полным каталогом:

install(DIRECTORIES ... USE_SOURCE_PERMISSIONS)

Подробнее см. документацию для команды установки.