Возможно ли обнаружение ОС с помощью GLib?
Можно ли определить, на какой платформе (GNU/Linux, Win32, OS X) запущено мое приложение Vala?
1 ответ
Решение
Поскольку Vala является компилируемым языком (в отличие от промежуточного или интерпретируемого), вы можете определить платформу, используя ваш любимый инструмент сборки, и использовать условную компиляцию.
Что-то вроде:
#if WINDOWS
message ("Running on Windows");
#elif OSX
message ("Running on OS X");
#elif LINUX
message ("Running on GNU/Linux");
#elif POSIX
message ("Running on other POSIX system");
#else
message ("Running on unknown OS");
#endif
Инструмент для сборки должен был пройти -D LINUX
и т. д. компилятору.
Я был бы осторожен и делал что-то подобное только в крайнем случае, потому что это может иметь неприятные последствия. Обычно лучше использовать кроссплатформенные библиотеки, которые уже обрабатывают различия для вас.
Кстати: смотрите также, как это делается в C++.