首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CMake错误:文件安装目标不是目录

CMake错误:文件安装目标不是目录
EN

Stack Overflow用户
提问于 2018-02-07 00:46:47
回答 1查看 1.7K关注 0票数 1

我正在运行命令"sudo make install",相关的cmake_install.cmake文件在底部。我收到的确切错误消息是:

代码语言:javascript
运行
复制
CMake Error at cmake_install.cmake:36 (file):
  file INSTALL destination:
  ~/Desktop/Geant/geant4.10.04-install/share/Geant4-10.4.0/geant4make is not
  a directory.


Makefile:104: recipe for target 'install' failed
make: *** [install] Error 1

这让我很困惑,因为我可以导航到那个确切的目录,它存在,而且是在安装过程中创建的,所以make install创建了这个目录,然后说它不存在……

此外,当我最初执行cmake命令时,我的安装是“~/Desktop/Geant/geant4.10.04- CMAKE_INSTALL_PREFIX”,但由于make install命令能够将geant4.10.04-install目录放在正确的位置,我认为这不是问题所在。

cmake_install.cmake文件的前50ish行(如果需要,我可以发布其余行...):

代码语言:javascript
运行
复制
# Install script for directory: /home/kagnew/Desktop/Geant/geant4.10.04

# Set the install prefix
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
  set(CMAKE_INSTALL_PREFIX "~/Desktop/Geant/geant4.10.04-install")
endif()
string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")

# Set the install configuration name.
if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
  if(BUILD_TYPE)
    string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
  else()
    set(CMAKE_INSTALL_CONFIG_NAME "Release")
  endif()
  message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
endif()

# Set the component getting installed.
if(NOT CMAKE_INSTALL_COMPONENT)
  if(COMPONENT)
    message(STATUS "Install component: \"${COMPONENT}\"")
    set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
  else()
    set(CMAKE_INSTALL_COMPONENT)
  endif()
endif()

# Install shared libraries without execute permission?
if(NOT DEFINED CMAKE_INSTALL_SO_NO_EXE)
  set(CMAKE_INSTALL_SO_NO_EXE "1")
endif()

if(NOT CMAKE_INSTALL_COMPONENT OR "${CMAKE_INSTALL_COMPONENT}" STREQUAL "Development")
  file(INSTALL DESTINATION "${CMAKE_INSTALL_PREFIX}/share/Geant4-10.4.0/geant4make" TYPE FILE MESSAGE_LAZY PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE FILES "/home/kagnew/Desktop/Geant/geant4-build/InstallTreeFiles/geant4make.sh")
endif()

更新:根据Tsyvarev的建议,将我的前缀路径的开头从"~“改为"/home/user/”似乎解决了这个问题

EN

回答 1

Stack Overflow用户

发布于 2021-03-06 04:28:19

使用环境变量$ENV{HOME}比硬编码/home/<user>更可取,因为它将使用正确的顶级目录(即,如果您正在进行跨平台构建,则在macOS上使用/Users而不是/home ),并且它将自动扩展以包括调用cmake的用户的名称,使其更适合协作环境。

此外,使用$ENV{HOME}应该会使make install前面的sudo变得不必要,尽管根据变量何时展开,$ENV{HOME}可能指的是调用cmake的用户或调用make install的用户(即,如果使用/root,则为/root),因此您的里程数可能会有所不同。

编辑:我找到了解决这个问题的方法,因为由于使用~,我得到了同样的"CMake错误:文件安装目的地不是目录“的输出。似乎出于某些目的,CMake真的不喜欢~$ENV{HOME}~具有完全相同的值,只是当您尝试在CMAKE_INSTALL_PREFIX中使用它时,CMake不会崩溃。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48647992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档