Определите, есть ли его ОС Ubuntu Linux в Makefile

13

Я хочу создать make-файл, который будет компилировать мои объекты и называть их в соответствии с дистрибутивом Linux (например, Suse, RedHat или Ubuntu). Как я могу определить, является ли ОС Ubuntu или нет?

RRR
источник
это работает? (так как вы удалили свой комментарий: D)
Rinzwind
да, я изменил OS var на "shell lsb_release -si", и теперь он работает хорошо :). Спасибо за ваш ответ!
RRR
+1 за смешное название. (подсказка: Makefile и Make file означают совершенно разные вещи.)
Mahesh

Ответы:

19

Мы используем cat /etc/lsb-releaseдля идентификации релиза Ubuntu:

sh-3.2$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=8.04
DISTRIB_CODENAME=hardy
DISTRIB_DESCRIPTION="Ubuntu 8.04.4 LTS"

Для других релизов это может быть

ls /etc/*release

Gentoo, RedHat, Arch & SuSE имеют файл релиза: http://linuxmafia.com/faq/Admin/release-files.html Это полный скрипт в ссылке;)


Пример кода для операционной системы, архитектуры и версии для систем типа Ubuntu:

OS=$(shell lsb_release -si)
ARCH=$(shell uname -m | sed 's/x86_//;s/i[3-6]86/32/')
VER=$(shell lsb_release -sr)
Rinzwind
источник