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
相关产品推荐
相关产品推荐

