Мы имеем не очень сложный, но большой (т.е. много файлов) Visual Studio C++ Консоль Win32, записанная в C++ 0x стандарт в VS2010. Это не использует нестандартного кода или чего-либо (Надо надеяться!).
Я теперь хочу портировать его на Linux. Какой путь самый быстрый путь состоит в том, чтобы сделать это? autoconf? старомодный make-файл? какое-либо другое решение?
Я бы использовал обычную программу make, но стараюсь максимально упростить ее с правилами по умолчанию. Добавляйте зависимости по мере продвижения.
РЕДАКТИРОВАТЬ: Как и на промежуточном этапе, создайте его с помощью mingw, чтобы избежать проблем с переносом всего API, пока у вас не будет работающей сборки в вашем новом механизме сборки.
Если ваше консольное приложение вызывает функции Win32 API, у вас есть выбор между изменением всего источника, в котором оно используется, или написанием модуля, реализующего эти функции.
В предыдущих попытках переноса этого типа я пробовал оба способа, и последний был проще. В итоге я написал всего от 18 до 20 функций прокладок.
Это оказалось достаточно успешным, так что я закончил тем, что написал уровень абстракции ОС, который использовался во многих проектах, которые просто позволяли мне компилировать в Windows native, cygwin, Linux, VxWorks и т. Д. С тривиальными изменениями в одном или двух файлах.
(ps Есть ли интерес к версии с открытым исходным кодом уровня абстракции ОС на C ++? Я думал о том, чтобы выпустить свободную версию этого уровня для всего мира, если будет достаточный интерес. Это в основном полезно там, где BOOST слишком тяжелый - т.е. встроенный проектов.)
Вы можете экспортировать make-файл из Visual Studio.
Обновление: Вообще-то больше нельзя, если только у вас нет VC6
.Самый быстрый способ сделать это?
g++ *.cpp -o myapp
Серьезно, в зависимости от ваших потребностей, даже создание make-файла может быть перебор. Если вас просто интересует быстрое и грязное «давайте посмотрим, сможем ли мы получить работающую программу для Linux», просто закиньте свои файлы кода в g ++ и посмотрите, что произойдет.
Скорее всего, вам не нужен autoconf (и я предлагаю вам не трогать его, , если вы не любите боль ), потому что вы не пытаетесь переноситься на дюжина разновидностей Unix.
НЕ РАБОТАЙТЕ ОТ АВТО * и настройте. Это ужасно ИМХО.
Если вы каким-то образом можете получить VS 8 или 9 vcproj / sln, вы можете использовать this . Я им не пользовался, поэтому не могу дать никаких советов.
Если вы собираетесь преобразовать вручную, я бы посоветовал что-нибудь вроде CMake, так как к нему довольно легко подготовиться достаточно быстро, даже для больших проектов.
Если проект имеет простой макет, вы можете добиться успеха, используя qmake Qt 4 следующим образом:
qmake -project
Он выведет файл qmake .pro, который можно преобразовать в make-файл на многих платформах (с помощью qmake). Это должно работать нормально, но не идеально. В качестве альтернативы вы можете установить плагин Qt для VS и позволить ему сгенерировать профессиональный файл из существующего проекта VS. Это заставит вашу систему сборки зависеть от qmake Qt4, что, вероятно, не то, что вам нужно.
Конечно, есть и другие вещи, например cmake, но все они потребуют ручного вмешательства.