Port Visual Studio С++ для Linux

У нас есть не очень сложная, но большая (т.е. множество файлов) Консоль Visual Studio С++ Win32, написанная на стандарте С++ 0x в VS2010. Он не использует какой-либо нестандартный код или что-то еще (надеюсь!).

Теперь я хочу поместить его в Linux. Каким образом это самый быстрый способ сделать это? Autoconf? старомодный файл? любое другое решение?

Ответ 1

Я бы использовал обычный make, но максимально упрощал его с помощью правил по умолчанию. Добавьте в зависимости от того, как вы продвигаетесь.

РЕДАКТИРОВАТЬ: Как и на промежуточном шаге, создайте его с помощью mingw, чтобы можно было избежать всей проблемы с переносом API до тех пор, пока у вас не будет рабочей сборки в новом механизме сборки.

Если ваше консольное приложение вызывает функции API win32, у вас есть выбор между изменением всего источника, в котором он используется, или записью модуля, который реализует эти функции.

В предыдущих усилиях портирования этого типа я пробовал это в обоих направлениях, а последнее было проще. Я закончил писать только около 18 до 20 функций прокладки.

Было достаточно успешно, что я написал слой абстракции OS, который использовался во многих проектах, которые просто позволяют мне скомпилировать на родной Windows, cygwin, Linux, VxWorks и т.д. тривиальные изменения в один или два файла.

(ps) Интерес к версии с открытым исходным кодом на уровне абстракции ОС на основе С++? Я думал о выпуске неизрасходованной версии этого приложения в мир, если у вас есть достаточный интерес. В основном это полезно, когда BOOST слишком тяжелый - т.е. встроенный проекты.)

Ответ 2

Скорее всего, вам не нужен autoconf (и я предлагаю вам не трогать его, если вы не любите боль), потому что вы не пытаются быть переносимыми на десяток ароматов Unix.

  • Сбросьте свои файлы Makefile вручную. Это не должно быть слишком сложно, если у вас есть набор общих правил и минимальные файлы Makefile, которые просто указывают исходные файлы и компилируют параметры.
  • Используйте GCC 4.5 как он поддерживает больше возможностей С++ 0x.

Ответ 3

Вы можете экспортировать файл make из Visual Studio.

Обновить: на самом деле вы больше не можете, если у вас нет VC6, лежащего вокруг

Ответ 4

ВЫЙДИТЕ ОТ АВТО * и настройте. Это ужасно ИМХО.

Если вы можете каким-то образом получить VS 8 или 9 vcproj/sln, вы можете использовать this. Я не использовал его, поэтому я не могу дать никаких советов.

Если вы переходите к ручному преобразованию, я бы предложил что-то вроде CMake, так как довольно легко готовиться достаточно быстро, даже для больших проектов.

Если проект имеет простой макет, вы можете успешно использовать Qt 4 qmake следующим образом:

qmake -project

Он выведет файл qmake.pro, который можно преобразовать в make файл на многих платформах (используя qmake). Это должно работать нормально, но не идеально. Кроме того, вы можете установить Qt-плагин для VS и позволить ему генерировать pro файл из существующего проекта VS. Это заставит вашу систему сборки зависеть от Qt4 qmake, что, вероятно, не так, как вы хотите.

Есть, конечно, другие вещи, такие как cmake, но все они потребуют ручного вмешательства.

Ответ 5

Самый быстрый способ сделать это?

g++ *.cpp -o myapp

Серьезно, в зависимости от ваших потребностей, даже генерация make файла может быть чрезмерной. Если вас просто интересует быстрый и грязный "посмотрим, можем ли мы получить рабочую программу на Linux", просто бросьте файлы кода в g++ и посмотрите, что произойдет.