Создание библиотеки на разных платформах без запуска всех платформ

У меня есть небольшой фрагмент кода, который работает как плагин для более крупного графического приложения. Платформа разработки — Qt с кодом C++. Мне удалось создать .so, .dylib и .dll для Linux, MacOS и Windows соответственно, но для этого мне нужно было иметь машину, работающую под управлением каждой операционной системы (в моем случае, Linux [ubuntu] gcc изначально, и Windows MinGW и MacOS XCode gcc на виртуальных машинах).

Есть ли способ собрать все 3 платформы с одной? Некоторое время назад я ломал голову над этой проблемой, и исследования на сегодняшний день показывают, что это нелегко (или осуществимо) сделать. Код должен быть связан только с одним заголовком, который определяет API плагина и построен из довольно простого Makefile (в настоящее время с небольшими вариациями для каждой платформы).


person Rog    schedule 13.02.2009    source источник


Ответы (3)


Вы должны взглянуть на кросс-компиляцию.

Вы в основном создаете компилятор, который (на вашей текущей платформе) будет выводить двоичные файлы для нужных вам платформ.

Попробуйте эту ссылку, чтобы сделать это в Linux, для Windows, с QT

person tliff    schedule 13.02.2009

Лучше поздно, чем никогда, я только что наткнулся на IMCROSS.

Выглядит весьма многообещающе!

person Rog    schedule 10.09.2009

Например, для Linux довольно легко настроить или даже загрузить виртуальную машину с помощью VMWare. Заставить OSX работать на VMWare несколько сложно, но возможно.

Запустив VMWare и разделив каталог на локальном диске, вы даже можете скомпилировать для разных платформ, используя одни и те же файлы.

Где-то есть кросс-компилятор для OSX, но я бы не стал доверять ему хорошего качества.

person shoosh    schedule 13.02.2009
comment
OSX использует gcc, использование кросскомпилятора в Linux для компиляции для OSX должно дать вам почти то же самое. - person tliff; 13.02.2009