1
Как я могу обнаружить оболочку, которая будет использоваться gnu make? Я хочу, чтобы мой макияж должен быть запущен на следующих платформах:Как обнаружить оболочку, используемую в GNU make?
- Линукс
- окна
- окна с Cygwin (Заметим, что на окнах с Cygwin марку использует Cygwin оболочки)
Тогда я как обнаружить, если gcc присутствует в системе независимо от ОС.
Просто чтобы быть ясно, «не cmd.exe» делает НЕ подразумевает bash. Это может означать POSIX sh, но это не одно и то же. Во-вторых, если вы хотите узнать, доступен ли GCC, почему бы вам просто не запустить его и посмотреть, не сработает ли он: 'ifneq (, $ (shell gcc -version))'? – MadScientist
Я знаю, что могут быть другие снаряды. Но обычно оболочки linux ведут себя совершенно аналогично. По крайней мере, с точки зрения поддержки 'which' и'/dev/null', которые я использую. Что касается не выполнения только 'ifneq (, $ (shell gcc -version)), это потому, что я хочу избавить BFU от сумасшедших сообщений. Например, я бы получил что-то вроде: 'process_begin: CreateProcess (NULL, gccx --version, ...) не удалось. сделать: M: 32: pipe: Bad file descriptor'. На самом деле с make я alergic, когда ppl оставил меня с каким-то автоматическим сообщением, который говорит мне простым языком, что не так ... –
Хорошо, но на самом деле у bash есть много дополнительных функций, которые недоступны в POSIX sh и make всегда запускает POSIX sh, никогда не bash (если вы не установите переменную SHELL). Очень часто люди пишут рецепты make, используя расширения bash, а затем не могут понять, почему они не работают. Итак, лучше понять это. – MadScientist