cmake - 有没有办法在 CMake 上区分 Fedora 和 CentOS?
问题描述
我需要在 CentOS 而不是 Fedora 上构建。我看过以前的帖子,但只检查它是否是 Windows、Linux 和其他平台。
解决方案
检查内容是否/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
推荐阅读
- c++ - 添加了 SDL 库:使用 VS 构建时“GNUC 未定义为预处理器宏”
- apache-kafka - 将消息加入 Kafka Stream 后从流中清除消息
- excel - 找到最后添加的工作表 (vba)?
- exception - NestJS:异常处理的最佳实践(异常过滤器 vs Interceptors.catchError)
- ruby-on-rails - 我应该将 Spree 中的所有控制器和路由复制/粘贴到我自己的应用程序吗?
- java - 在 64 位 C++ 中使用 JNI 时从 JAR 加载类失败
- c# - 如何从 MIME 内容创建图像?
- powershell - 如何获取与 0x1 或 0x4 匹配的 Powershell > Get-WinEvent > Security > Message > Access Mask
- objective-c - arc4random_uniform() 的奇怪结果。发生了什么
- alias - 在 ParcelJS 中使用别名