Каков наилучший способ кросс-платформенной разработки с помощью Visual Studio? - PullRequest
2 голосов
/ 26 ноября 2008

Мы разрабатываем ряд игр на нескольких платформах (DS / Wii / Xbox 360 / PS3 / PC / PSP). У каждого есть свой компилятор / компоновщик и отладчик. Мы хотим использовать Visual Studio в качестве IDE и управлять процессом сборки, но используем компиляторы для конкретной платформы (и настройки) для генерации соответствующего вывода. Мы можем управлять процессом сборки вне VS (используя jam или ant скажем), но это не предпочтительное решение.

Похоже, что траление в Интернете является распространенной проблемой, но ни у кого нет хорошего решения. Кто-нибудь решил эту проблему? Какой лучший способ справиться с этим.

На ум приходит несколько решений - автоматически создавать сценарии nant из решения на этапе предварительной сборки (вероятно, это наименьшая работа, но все же не идеальная), заменить cl.exe и link.exe на приложения-заглушки, использовать msbuild (но это направлено на разработку .net, а не на собственный код), напишите пользовательский плагин VS (много работы - любые указатели на существующий, коммерческий или открытый, будут хороши). Кто-нибудь пробовал что-нибудь из этого? Это было хорошо для тебя? ;)

Приветствия

Ответы [ 4 ]

2 голосов
/ 28 ноября 2008

CMake не делает то, что я после. Для ясности - когда я говорю «управлять процессом сборки», я имею в виду, что любой может взять проект из репозитория, затем из VS выбрать платформу, скомпилировать / запустить, добавить файлы, изменить настройки и т. Д., И все это по волшебству; ) Итак, чтобы ответить на мой собственный вопрос, после небольшого количества копаний я пришел к этому.

«Правильный» способ сделать это - написать плагин для VS, который добавит новую платформу, которая появится в менеджере конфигурации (как они сделали для Xbox, Pocket PC и т. Д.). К сожалению, может показаться, что Microsoft в своей бесконечной мудрости решила не подвергать API для этой особой функции великому немытому.

Однако вы можете написать надстройку и параллельно заменить cl.exe и link.exe программами-заглушками, которые отправляют фактическую компиляцию соответствующим компиляторам. Похоже, для этого есть проект с открытым исходным кодом VSItanium (только для 2003 года, и его придется изменить для пользовательских компиляторов). Также SNSystems делают это с помощью пакета VSI для PSP.

Для написания плагина потребуется некоторое время, поэтому в настоящее время быстрое решение заключается в том, чтобы написать скрипт, который анализирует файлы решения и проекта и извлекает важные биты и генерирует файлы, которые должны быть включены nant. (или сделать, или джем или что-то еще) - вызывается с шага за сборку. Либо так, либо пройдите весь маршрут решения makefile: /

MSBuild действительно должен идти вперед. У меня была быстрая игра с ним, и вы можете (почти) делать все, что я хочу, но почему-то это не совсем гель. Думал, что это проект на C # - возможно, придется потратить на это больше времени, если только гуру MSBuild не захотят указать мне правильное направление.

1 голос
/ 05 января 2009

Другой вариант, который используется в Homebrew PSP SDK ( MinPSPW ), - это использование проектов Makefile. Вы используете редактор кода из VS, но в конце, когда вы вызываете компилятор, он будет использовать правильный компилятор, основанный на вашем make-файле. Большинство ошибок вывода будут отслеживаться VS и выделяться в ваших источниках.

1 голос
/ 26 ноября 2008

Вы смотрели на CMake ? Он может генерировать файлы проекта Visual Studio из текстового описания.

0 голосов
/ 28 ноября 2008

В дополнение к рекомендации для CMake, с оговоркой, что вы не сможете управлять проектами в VS для других платформ. Он просто не предназначен для управления путями к библиотекам, определениями и т. Д. Для чего-либо, кроме текущего проекта / цели / платформы. Вы почти наверняка должны будете сказать «библиотеки платформы X здесь живут», и я просто не вижу способа сделать это через VS.

...