CMake

2013-06-10 44 views
6

kullanarak Linux'u hedefleyen Windows platformları altında çapraz platform oluşturma Windows 2000'de C++ yazılımında (MSVC++ kullanarak) bir yazılım geliştiriyorum, fakat yazılımımı her platformda kullanmak istediğim için kullanmaya karar verdim. CMake yapı jeneratörü olarak. Bu nedenle, hala CMake'de yeni başlayan bir kişiyim. CMake eğiticilerinden derleme kodlarını geçebilmek için önce ana platformda hedef platformu simüle eden bir araç zincirinin kurulması gerektiğini anlıyorum. Sonra, bu araç zinciri tarafından sağlanan uygun bir hedef platform C ve C++ derleyicileri kullanılarak, CMake makefile vb. Oluşturabilirdi.CMake

Şimdi, bir Linux platformunda Linux platformu (GNU/Linux) için kodumu oluşturmak istiyorum. Ben Cygwin ile kombine CMake kullanarak ve gcc ve g ++ derleyiciler olarak kullanarak yukarıdaki prosedürü denedim. İyi, yaratılmış makefiller inşa etti ve Cygwin terminalinde "make" verdiğimde, oluşturulan maketler "yapıldı". Şimdi Linux platformunda çalışacağını umduğum bir yürütülebilir program var. Ama Linux'ta hatayı alıyorum: bash ikili dosyayı çalıştıramıyor.

Komut dosyası executablename kullanılarak, yukarıdaki işlem tarafından yapılan yürütülebilirliğin yalnızca Windows için olan PE32 türünde olduğunu farkettim.

Şimdi sorum şu: Cmake kullanarak çapraz platform oluşturma prosedürü benim için doğru mu? Yoksa bir Linux ELF çalıştırılabilir hale getirmek için windows altında başka bir Linux toolchain kullanmalı mıyım? Ne istediğimi verecek aklıma ne tür araçlar geliyor?

çok teşekkürler

Setareh

+0

Cmake hakkında hiçbir şey bilmiyorum, ancak qmake'nin farklı platformlar için "profiller" oluşturuyor. Belki de, cmake dokümanlarındaki "hedef platform" seçeneğini veya bunun gibi bir şeyi aramalısınız. –

+1

http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html – stijn

+0

[Makinemdeki qmake için mkspec'lerin örnek listesi] (http://pastebin.com/raw.php ? i = 3mMjgC9p) –

cevap

4

Derlemekle ilgileniyorsanız, buraya bakmak isteyeceksiniz: http://www.cmake.org/Wiki/CMake_Cross_Compiling. Bununla birlikte, windows makinenizde bir Linux VM benzeri sanal kutu kurmanızı ve Linux'ta saf bir şekilde inşa etmenizi öneririm. Çok daha hızlı derlenecek ve çapraz derleme hakkında endişelenmenize gerek kalmayacaktır. Aynı disk ağacını paylaşabilmeniz için windows diski linux VM'den bağlayabilirsiniz. Linux VM, windows altında çalışan gcc'den çok daha hızlı bir şekilde derlenecek.

+0

Cevabınız için çok teşekkürler. Şimdi seçeneklerimi anlıyorum. – Setareh

0
CMake konusundaki düşünceleriniz doğrudur

... Eğer talep inşa sistemi oluşturmak (veya şu anda üzerinde platformu için varsayılan değerdir) kurallara dayalı nasıl belirleyecek senin CMakeLists.txt dosyanızda. Ancak, linux'u hedefleyebilecek bir şey yüklü değilse, bu bir windows makinesinde linux derlemenize yardımcı olmayacaktır. Hedefleme linuxunu derlemek için bir linux derleyicisi kullanmanız gerekecektir. link posted by @stjin, cygwin'e nasıl yükleneceğini anlatır. Ardından, CKağıt yapı kurmak için, terminalde bunu:

CC=gcc-linux CXX=g++-linux cmake . [options] 

Bu özel linux hedeflenen derleyiciler bulmak için CMake söyleyecektir. Umarım, bu derleyicilerle derledikten sonra Linux üzerinde çalışabilirsiniz.

+0

@Stjin ve SethMMorton, Yorumlarınız ve bağlantılarınız için teşekkür ederiz. Ama metamod web sitesi görünüşte ikili dağıtımını değiştirdi, şimdi sadece bir metamod.dll dosyası var ve Cygwin Linux çapraz derleyicileri bu şekilde nasıl kurabilirim hakkında hiçbir fikrim yok. Herhangi bir fikir? – Setareh