首页 > 解决方案 > 有没有办法在 CMake 上区分 Fedora 和 CentOS?

问题描述

我需要在 CentOS 而不是 Fedora 上构建。我看过以前的帖子,但只检查它是否是 Windows、Linux 和其他平台。

标签: cmake

解决方案


检查内容是否/etc/os-release有效? https://www.freedesktop.org/software/systemd/man/os-release.html

你可以读入文件,它会包含一行像NAME="Ubuntu". 用于file()解析它并抓取该NAME字段。

file(STRINGS /etc/os-release distro REGEX "^NAME=")
string(REGEX REPLACE "NAME=\"(.*)\"" "\\1" distro "${distro}")
file(STRINGS /etc/os-release disversion REGEX "^VERSION_ID=")
string(REGEX REPLACE "VERSION_ID=\"(.*)\"" "\\1" disversion "${disversion}")
message("found ${distro}.${disversion}")

输出

found Ubuntu.20.04

推荐阅读