Я использовал XCode для написания многих консольных программ на C и C ++, когда учился в школе. Я начал каждый с шаблона приложения консоли XCode. Я зависел от стандартных библиотек C и POSIX. Я держался подальше от библиотек Apple. Я мог бы создавать, запускать, профилировать и отлаживать программы из Xcode. Единственное, что я не смог сделать в Xcode, - это создать конфигурацию переносимой сборки. Для этих программ консольных проектов класса я бы просто написал make-файл для каждого проекта. С самого начала я знал, что мне понадобится рукописный make-файл, поэтому процесс сборки был простым.
Сейчас я пишу в основном приложения для iOS, но иногда я пишу консольное приложение для предварительной обработки данных для моих приложений для iOS. Я не вижу каких-либо улучшений в новых версиях Xcode для построения систем кроссплатформенной сборки. Xcode ориентирован на приложения для iOS и Mac, но признает необходимость в консольных программах и включает в себя некоторую специфическую поддержку Mac OS X.
Так что мой совет для написания консольных программ для других платформ в XCode состоит в том, чтобы сохранить процесс сборки простым. Начните с шаблона проекта консольного приложения Xcode. Оставайтесь с системами сборки проекта Xcode. Заставьте программу работать, используя функции Xcode IDE. Затем перенесите процесс сборки на внешнюю систему сборки. Напишите make-файл или используйте любые инструменты сборки, которые вы предпочитаете. Используйте командную строку в Mac OS X для сборки и тестирования программы в Mac OS X из этой новой системы сборки. Затем перенесите проект на другую платформу, соберите и снова протестируйте. Я редко обнаруживал какие-либо проблемы, когда доходил до второй платформы.
Я даже использовал этот метод, работая в командах, где члены моей команды не были на Mac. Каждый из нас использовал свой собственный выбор в системах сборки, делясь файлами исходного кода. Тем не менее, я мог видеть, что поддержка нескольких систем сборки для больших сложных программ быстро станет несостоятельной. В этот момент я бы порекомендовал стандартизировать одну IDE.