You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CMake的file(READ)为何无法找到/etc/os-release文件?

CMake读取Arch Linux下/etc/os-release软链接失败问题

在Arch Linux系统中,/etc/os-release是指向../usr/lib/os-release的相对路径软链接,使用less /etc/os-release可以正常读取文件内容,但CMake执行file(READ)操作时却报错“无此文件或目录”。

原CMake代码

file(READ "/etc/os-release" os_release)

报错信息

CMake Error at pkg/CMakeLists.txt:35 (file):
  file failed to open for reading (No such file or directory):

    /etc/os-release

尝试的无效处理代码

为解决问题,尝试添加软链接判断并获取真实路径,但代码未进入if(IS_SYMLINK)分支,直接执行else部分:

if(IS_SYMLINK /etc/os-release)
    file(READ_SYMLINK "/etc/os-release" os_release)
    if(NOT IS_ABSOLUTE "${os_release}")
        get_filename_component(dir "/etc/os-release" DIRECTORY)
        set(os_release "${dir}/${os_release}")
    endif()
else()
    file(READ "/etc/os-release" os_release)
endif()

内容的提问来源于stack exchange,提问作者rffontenelle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:23:16