CMake 跨平台编译:文件无法创建目录:/data。可能需要管理权限
CMake Cross Platform Compile: file cannot create directory: /data. Maybe need administrative privileges
我正在尝试根据检测到的系统编译 tar.gz
文件或 .deb
文件。
使用下面的代码,当检测到的系统是 Linux 时,我能够成功地创建一个 .deb
文件,但是当为需要 `.tar.gz' 的 QNX 编译时文件,我收到错误:
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)
作为斯蒂芬·纽厄尔 :
My guess is the leader slash in your install
command is making cmake treat it as an absolute directory. What happens if you just use data
instead of /data/
?
使用 data
而不是 /data/
解决了问题。
我正在尝试根据检测到的系统编译 tar.gz
文件或 .deb
文件。
使用下面的代码,当检测到的系统是 Linux 时,我能够成功地创建一个 .deb
文件,但是当为需要 `.tar.gz' 的 QNX 编译时文件,我收到错误:
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)
作为斯蒂芬·纽厄尔
My guess is the leader slash in your
install
command is making cmake treat it as an absolute directory. What happens if you just usedata
instead of/data/
?
使用 data
而不是 /data/
解决了问题。