Перенос приложения C++ из Windows в GNU/Linux.

Я пытаюсь перенести компьютерную игру из Windows в GNU/Linux. Он использует Ogre3D, CEGUI, ogreogg и ogrenewt. Насколько я знаю, все зависимости работают на GNU/Linux, а в самой игре нет кода, специфичного для ooze.

Вот часть вопросов: Есть ли простой способ портировать проект Visual Studio 2008 на цепочку инструментов GNU/Linux?

Как управлять зависимостями? В Visual Studio я бы просто добавил их в листы свойств или каталоги по умолчанию. Я предполагаю, что на GNU/Linux autoconf и позабочусь об этом, но каким образом? Должен ли я добавлять каждый .cpp и .hpp вручную или есть способ автоматизировать процесс? Как решить проблему зависимостей в разных местах в разных системах? Я хотел бы использовать Eclipse в качестве своей IDE под GNU/Linux.


person AndrejaKo    schedule 16.05.2010    source источник
comment
Один вопрос за один раз является хорошей идеей здесь.   -  person    schedule 16.05.2010
comment
Да, ты прав. Мне просто нужно немного подтолкнуть в правильном направлении, поэтому я задаю много вопросов. Я подумаю об этом и, возможно, отредактирую пост позже, когда мне удастся сформулировать свои проблемы в связный вопрос. Моя главная проблема заключается в том, что эквивалентно файлу проекта Visual Studio в мире GNU/Linux. Я, наверное, должен был спросить только об этом.   -  person AndrejaKo    schedule 16.05.2010


Ответы (2)


Как заметил @pmr, вы действительно ищете систему сборки. Хотя традиционно использовались GNU Autotools (Automake, Autoconf и т. д.), с этими инструментами связано много проблем, и они требуют невероятно крутой кривой обучения. Вместо этого я настоятельно рекомендую вам использовать CMake. CMake является чем-то вроде метасистемы сборки, поскольку CMake генерирует проекты для различных систем сборки, используя описание проекта CMake; CMake по умолчанию создает проект Makefile из описания своего проекта, но он также может создавать проекты для Visual Studio, Xcode, KDevelop и других. Вы можете найти шаблон проекта приложения C++ и Шаблон проекта библиотеки C++ полезен в качестве примера использования системы сборки CMake. Учебники и другие вводные материалы по CMake можно найти на CMake Wiki, а Справочное руководство по CMake содержит подробные инструкции для всех различных команд, используемых CMake. поддерживает (вы, вероятно, обнаружите, что ADD_EXECUTABLE, ADD_LIBRARY, TARGET_LINK_LIBRARIES, INCLUDE_DIRECTORIES и LINK_DIRECTORIES являются наиболее полезными из доступных команд). Кроме того, хотя я настоятельно рекомендую вам использовать CMake вместо Make, вы можете найти мои руководство по Makefile полезно, если вы решите использовать Make.

person Michael Aaron Safyan    schedule 17.05.2010
comment
Хотя это очень круто: я настоятельно рекомендую руководство GNU Make в качестве учебника по Makefile: gnu.org/software/make/manual/make.html - person pmr; 17.05.2010
comment
@pmr, руководство GNU Make определенно стоит прочитать при изучении Make, но это не совсем учебник. Если вы посмотрите на мой собственный учебник, в самом конце он ссылается на руководство GNU Make для дальнейшего чтения. Тем не менее, я думаю, что некоторые из предупреждений, которые я вставил в него, также заслуживают прочтения, поскольку слишком много людей принимают (простите за каламбур) те же самые неверные решения со своими Makefile. - person Michael Aaron Safyan; 17.05.2010

По сути, вы спрашиваете: что такое хорошая система сборки для GNU/Linux. На эту проблему нет однозначного ответа. Make + autoconf — это стандартный способ ведения дел, но вы могли бы быть счастливее с cmake, преимуществом которого является кроссплатформенность.

person pmr    schedule 16.05.2010
comment
Действительно, я спрашиваю об этом. Также я был бы рад, если бы кто-нибудь мог указать мне на хорошее руководство, в котором объясняется, как использовать make&&friends и cmake. Меня немного смущает способ обнаружения местонахождения библиотек в системах GNU/Linux. - person AndrejaKo; 17.05.2010
comment
@AndrejaKo /usr/include используется для файлов заголовков и /usr/lib для разделяемых библиотек. Google находит множество руководств. - person pmr; 17.05.2010
comment
@AndrejaKo, ты бы не стал использовать все это сразу. Вы либо используете Autotools, либо используете CMake, но не оба. CMake создает Makefile, который затем создается с помощью Make. Что касается заголовков и библиотек, это зависит от системы сборки. С Make вам действительно нужно передать флаги компилятора для настройки путей, используя -I для добавления путей включения заголовков и -L для добавления путей включения библиотек. В CMake вы используете INCLUDE_DIRECTORIES и LINK_DIRECTORIES для добавления путей поиска заголовков и библиотек соответственно. - person Michael Aaron Safyan; 17.05.2010