如何在 CMake 中区分 Ubuntu 和 Debian?

coo*_*oow 4 debian cmake

我需要在 CMakelists.txt 中区分 Ubuntu 和 Debian。有人知道怎么做吗?我尝试使用 CMAKE_SYSTEM 和 CMAKE_SYSTEM_NAME 但它只返回有关 Linux 内核的信息......

谢谢

gui*_*ini 5

你可以尝试这样的事情:

cmake_minimum_required(VERSION 2.8)

file(READ "/etc/issue" ETC_ISSUE)
string(REGEX MATCH "Debian|Ubuntu" DIST ${ETC_ISSUE})

if(DIST STREQUAL "Debian")
    message(STATUS ">>>> Found Debian <<<<")
elseif(DIST STREQUAL "Ubuntu")
    message(STATUS ">>>> Found Ubuntu <<<<")
else()
    message(STATUS ">>>> Found unknown distribution <<<<")
endif()

add_executable(main main.cpp)
Run Code Online (Sandbox Code Playgroud)

会将包含您正在使用的发行版名称的/etc/issue文件读取到ETC_ISSUE变量中。然后你为 Debian 或 Ubuntu grep 并将结果保存在DIST 中。现在您可以使用if命令检查DIST