Как получить консоль вывода в проекте Ogre под MacOSX?

Я работаю над проектом с использованием Ogre3D. Недавно мы перенесли наш проект на MacOSX, но некоторые вещи были связаны с Windows API. В частности, я не знаю, как это следует перевести:

#if defined( __WIN32__ ) || defined( _WIN32 )
    AllocConsole();
#endif

Было бы неплохо когда-нибудь портировать проект под Linux, так есть ли Unix-совместимый способ выделить консоль для стандартного вывода/ввода?

Спасибо


person tunnuz    schedule 05.10.2009    source источник


Ответы (1)


С точки зрения UNIX, поскольку я не очень разбираюсь в разработке для Mac.

Консоль "распределена" по умолчанию. Однако вы не можете приказать ОС открыть консоль. Вы можете сказать IDE, которую вы используете, чтобы открыть его в терминале, или, если он поддерживает это, создать ваше текущее приложение как консольное приложение, несмотря на использование графического интерфейса.

Что я имею в виду, говоря, что консоль выделена по умолчанию? Фактически каждый процесс получает свои stdin, stdout и stderr (идентификаторы файлов 0, 1 и 2) от вызывающего процесса. Таким образом, если вызывающий процесс (bash, Finder, что угодно) случайно не забывает оставить их открытыми, у вас всегда будет открыта консоль... но, возможно, невидимая?

Самый простой способ получить консоль — запустить приложение из терминала, как Finder сделал бы это из графического интерфейса. Помните, что .apps на самом деле являются папками:

/projects/myapp$ ./BuiltApplication.app/Contents/MacOS/BuiltApplication

Finder устанавливает текущий рабочий каталог в папку, в которой находится пакет .app, поэтому вышеприведенное эмулирует все это лучше всего.

Кроме того, взгляните на консольное приложение /Applications/Utilities/Console.app, входящее в состав MacOS. Консоль обычно используется для просмотра stdout и stderr. Я не могу проверить это, так как я не на Mac, но я действительно нашел несколько источников, в которых говорится, что stdout и stderr должны быть перенаправлены туда. Посмотрите это сообщение:

Вы можете использовать Console.app для просмотра вывода приложений, запущенных обычным образом, потому что инфраструктура запуска специально отправляет туда свои stdout и stderr. Вы также можете использовать подпрограммы asl для запроса журнала или для выполнения более сложной регистрации, если хотите.

person Ivan Vučica    schedule 06.10.2009