Начало работы с кроссплатформенным проектом C ++ - PullRequest
7 голосов
/ 24 сентября 2010

Я запускаю проект на c ++, который я хотел бы одинаково хорошо скомпилировать в Eclipse (Linux) и vs2010 из одного и того же репозитория и мог бы использовать некоторую помощь для начала работы.Хотя многие из этих аспектов могут быть индивидуально заданы Google, я надеялся получить совет о том, как подойти к проблеме в целом.

Например, где хранить исходные коды библиотеки, как структурировать файл make,и как интегрировать googletest (сложно найти учебник для начинающих только на googletest).Было бы неплохо получить ссылку на учебник, посвященный этим аспектам, или серию учебников, которые вместе могли бы помочь.

Мой опыт работы в C #, и я пытаюсь поддерживать "чистоту" и организацию моего VSпроекты.

Ответы [ 3 ]

13 голосов
/ 24 сентября 2010

Я занимался кроссплатформенными проектами, в которых использовались «родные» системы сборки на обеих платформах (файлы vsproj на windows и make-файлы на linux), но поддерживать оба файла проекта было определенно затруднительно. Так что да, я бы согласился с другими предложениями, которые следует начинать с надежной утилиты для кросс-платформенной сборки. CMake или, возможно, Boost build кажутся достойными вариантами - вероятно, есть много других.

Когда дело доходит до сторонних библиотек, вам нужно придерживаться того, что является надежно протестированным кроссплатформенным. Boost - лучшая библиотека общего назначения для c ++ (да, вы видите, что она упоминается здесь почти в каждом потоке c ++ ... но это потому, что на самом деле - это хороший набор полезных вещей ). Что касается XML, HTTP, библиотек изображений, пользовательского интерфейса - здесь есть все хорошие кроссплатформенные варианты - просто посмотрите вокруг или спросите здесь, есть ли у вас особые требования. Что бы вы ни делали, не используйте какую-либо библиотеку из CodeProject или другого ориентированного на MS сайта, которая была протестирована только с Visual Studio 6 - это просто приведет к страданиям. В наши дни большинство библиотек GNU основано на Windows, поэтому вы должны быть в безопасности с этим.

Хотя это будет заманчиво, постарайтесь свести к минимуму платформу #ifdefs в своем коде - вместо этого предпочтительнее абстрагировать любые специфичные для платформы вещи в библиотеке, где это возможно.

Удачи!

5 голосов
/ 24 сентября 2010

Вы захотите посмотреть на cmake .

4 голосов
/ 24 сентября 2010

Одна вещь, которую я могу предложить, если вы сильно кроссплатформенны и хотите, чтобы все было как можно более «чистым»: централизуйте свою систему сборки с помощью современного кроссплатформенного инструмента сборки, такого как Scons. Он написан на Python, он довольно лаконичен и мощен и работает везде.

Или, если вы поклонник Eclipse, просто установите Eclipse на Windows и GNU / Linux. Как я уже упоминал выше, он кроссплатформенный, и вы можете заставить его работать на компиляторах в самых разных системах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...