CMake Cross Platform Compile: файл не может создать каталог: / data. Может быть, нужны административные привилегии - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь скомпилировать, в зависимости от обнаруженной системы, файл tar.gz или .deb.

Используя приведенный ниже код, я могу успешно создать файл .deb когда обнаружена система Linux, однако при компиляции для QNX, который запрашивает файл `.tar.gz ', я получаю сообщение об ошибке:

file cannot create directory: /data.  Maybe need administrative
  privileges.

Эта команда для системы не должна и не может быть выполнена как sudo и даже при попытке выполнить команду make как sudo make install я получаю ошибки, относящиеся к среде компиляции (настроенной для QNX).

Мой код CMakeList.txt:

set(CPACK_ARCHIVE_COMPONENT_INSTALL ON)
if( "${CMAKE_CXX_PLATFORM_ID}" MATCHES QNX )
    message( STATUS "QNX found" )
    set(CPACK_GENERATOR "STGZ")
else()
    message( STATUS "defaulting to Linux" )
    set(CPACK_GENERATOR "DEB") 
endif()

install(
        TARGETS         binary 
        DESTINATION     "/data/"
        )  

include(CPack)

1 Ответ

0 голосов
/ 05 мая 2020

Как отмечает Стивен Ньюэлл в комментарии :

Я предполагаю, что лидер sla sh в вашей команде install заставляет cmake рассматривать его как абсолютный каталог , Что произойдет, если вы просто используете data вместо /data/?

Использование data вместо /data/ решит проблему.

...