Изграждане на библиотека между платформи, без да се изпълняват всички платформи

Имам малко парче код, който работи като плъгин за по-голямо графично приложение. Платформата за разработка е 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