Birliği kaynaktan nasıl oluşturabilirim?


64

Mevcut geliştirme sürümünde Unity'yi kaynak koddan nasıl oluşturacağımı bilmek istiyorum. Lütfen aşağıdaki konuları ele alın:

  • Birliği derlemek için hangi paketler gereklidir?
  • Geçerli kaynak kodunu nereden bulabilirim?
  • Birliği gerçekten yapılandırmak ve derlemek için gereken adımlar nelerdir?
  • Depodaki sürümün yanında en son sürümü güvenle çalıştırmak mümkün müdür?

Yanıtlar:


65

Kaynağından Birlik İnşa Etmek

Bu kılavuzda, Unity trunk'un ayrı bir sürümünü oluşturacaksınız (yerel olarak yerel dizininize yüklenmiş), bu nedenle sürümü Ubuntu depolarından bozmaktan korkmanıza gerek kalmaz ve ayrıca tüm ülkede kök izinleri almanıza gerek kalmaz. tüm süreç (yapı bağımlılıklarını kurmak hariç).

0. Yapı bağımlılıklarını yükleme

Gerekli tüm yapı bağımlılıklarını yüklemek için bunu bir kez çalıştırmanız gerekir:

sudo apt-get install bzr cmake compiz-dev gnome-common libbamf3-dev libboost-dev \
libboost-serialization-dev libgconf2-dev libgdu-dev libglewmx1.6-dev \
libgnome-desktop-3-dev libibus-1.0-dev libindicator3-dev libjson-glib-dev \
libnotify-dev libnux-2.0-dev libpci-dev libsigc++-2.0-dev libunity-dev \
libunity-misc-dev libutouch-geis-dev libxxf86vm-dev libzeitgeist-dev xsltproc

Kaynak kodu havuzlarınız (aka deb-src) etkinse, bunun yerine kullanabilirsiniz:

sudo apt-get build-dep unity

1. Çevreyi hazırlamak

Değiştirin SOURCEve PREFIXdizinleri ile kaynak ve gitmek dosyaları oluşturmak istediğiniz. Bu örnekte ikisini de ev dizinime koydum:

export SOURCE=$HOME/source/unity
export PREFIX=$HOME/build/unity

export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH"
export LD_LIBRARY_PATH="$PREFIX/lib:$LD_LIBRARY_PATH"
export LD_RUN_PATH="$PREFIX/lib:$LD_RUN_PATH"
export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"

mkdir -p "$PREFIX"
mkdir -p "$SOURCE"
cd "$SOURCE"

2. Bina Nux

NuxBirlik gövdesini derlemek için muhtemelen en son sürümünü almanız gerekecek :

bzr branch lp:nux
cd nux
./autogen.sh --disable-examples --disable-gputests --disable-tests --prefix="$PREFIX"
make -j4
make install
cd ..

İpucu : Modern masaüstlerinin ve dizüstü bilgisayarların çoğunun birkaç çekirdeği vardır. Bundan faydalanarak derlemeyi büyük ölçüde hızlandırabilirsiniz. makeKomut yap-kullanmakta etkinleştirebilirsiniz hangi bu desteği vardır -JN anahtarını N paralel olarak çalıştırmak için işlerin sayısıdır. Temel kural, işlemcinizdeki çekirdek sayısının 2 katını çalıştırmaktır. Bu nedenle, normal bir çift çekirdekli bilgisayarda make -j4derleme süresini en aza indirmek için çalıştırmalısınız .

3. Birlik Oluşturma

Şimdi en son Unity kodunu alın ve oluşturun:

bzr branch lp:unity
cd unity
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON -DCMAKE_INSTALL_PREFIX="$PREFIX"
make -j4
make install

İşte bu, oturumu kapatıp tekrar açın ve en son Unity'yi çalıştırıyor olmalısınız. Alternatif olarak , koşabilirsiniz

setsid $PREFIX/bin/unity

4. Güncelleniyor

1. adımda anlatıldığı gibi ortamı hazırladığınızdan emin olun, ardından her iki üst düzey dizini de girin nuxve unityçalıştırın bzr pull, yeniden oluşturun ve yeniden yükleyin.

Eski dosyaların hiçbirinin yapınızı bozmayacağından emin olmak buildiçin unitydizindeki dizini kaldırmanızı ve yeniden oluşturmanızı öneririz.

5. Birliği Kaldırma

Üç dizinleri çıkarın $SOURCE, $PREFIXve ~/.compiz-1.


Faydalı Link:


Kullanmakta olduğumuz sürümü klonlamak için çok önemli bir şey olduğunu düşünüyorum, örneğin Ubuntu 12.04'te, Nux'un en son sürümünü klonlamaya çalıştım ve ortalık dağıldı, çünkü Nux kullanıldı, sharedptrancak 12.04'teki gcc görünmüyor make dosyalarına eklenmesi için destek verin veya biraz bayrak gerek. Bu yüzden, sistemime uygun tam sürümü klonlamak çok önemlidir.
Muhammad Hewedy

Bölüm 2'den hiçbiri 14.04'te çalışmıyor ...
Goddard,

xserver-xorg-video-kukla: Bağımlı:: xorg-video-abi-15 Bağımlı: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard


7

Ana dizininizde oluşturma

Bazen test nedenleriyle Unity ve nux'u ev dizininizde kurmak faydalı olabilir, böylece paketlerde ve / veya PPA'larla uğraşmadan bir şeylerin bagajda sabitlenip sabitlenmediğini görebilirsiniz. Jason Smith'e (Unity Dev) Unity'yi nasıl inşa ettiğini sordum ve yöntemini bana açıkladı:

  1. Bu cevaptaki tüm yapı bağımlılıklarına sahip olduğunuzdan emin olun .

  2. Öncelikle evinizde "evreleme" adında bir dizin oluşturun, işte orası Birliği oluşturacağımız yer. Yapı ortamını hazırlayacak küçük bir komut dosyası oluşturun, giriş dizinini kendiniz ile değiştirin:

    #!/bin/bash
    
    PREFIX=/home/jorge/staging
    
    export XDG_DATA_DIRS="$PREFIX/share:$XDG_DATA_DIRS"
    export LD_LIBRARY_PATH="$PREFIX/lib/"
    export PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/"
    

    Bunu çağırıyorum unity.shve her zaman Birlik inşa etmek istediğimde çalıştırıyorum. Yani temelde chmod +x unity.shve sonra ./unity.shne zaman inşa etmek istediğiniz.

  3. Nux oluşturun:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. Birlik İnşa Et:

    bzr branch lp:unity
    cd unity
    mkdir build
    cd build
    cmake .. -DCMAKE_INSTALL_PREFIX=/home/jorge/staging/ -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
    make -j4
    make install
    

NOT: Bu, ev dizininizde nux ve birlik oluşturur, burada sudoya veya buna benzer bir şeye gerek yoktur.

  • Oturumu kapatıp tekrar açmak, Unity / nux’un bu sürümünü, kurulduğundan bu yana otomatik olarak çalıştırır. ~/.compiz
  • Normal paketlere geri dönmek için sadece oturumu kapatın, silin ~/.compizve tekrar oturum açın.

6

Varsayılan ortamın (Unity) kaynak kodu pakette bulunabilir unity. Kaynağı ile birlikte apt-get source unitykurmak sudo apt-get build-dep unityve kesmek için bağımlılıkları yükleyin .

Bu, başlatıcıyı sağ, alt, üst, vb.


Konumun tam olarak nasıl değiştirileceğini genişletebilir misiniz? Hangi dosyayı veya yapılandırmayı değiştireceğinizi bilmek harika olurdu.
PideJ

4

Burada mükemmel resmi belgeler var - Birlik Geliştirilmesi .

İşte Unity'yi binadan bir alıntı - Kaynaktan derlemek ve derlemek

Bina Birliği

Bu talimatlar, kaynaktan bir birlik oluşturmanıza yardımcı olacaktır. Ancak, dikkate alınması gereken birkaç şey var:

  • Yerel olarak oluşturduğunuz hiçbir şeyi ana dizininizin dışına kopyalamamanız önerilir. Bunu yapmak sorun istiyor, özellikle de tüm masaüstü kabuğunu oluştururken. Sistem genelinde masaüstü kabuğunuzu mahvetmeyi başarırsanız, çok üzücü bir programcı olacaksınız!
  • Kesin Ubuntu sürümünü çalıştırdığınız varsayılmaktadır.
  • Ayrıca, birliği bagajdan inşa etmek istediğiniz varsayılmaktadır (yani, lp: birlik).

Kaynak kodunu almak:

Bazaar kurulu değilse, şimdi yükleyin:

sudo apt-get install bzr

Birlik kodu için kendinize bir klasör yapmak isteyeceksiniz. Böyle bir şey yapın:

mkdir -p ~/code/unity
cd ~/code/unity

Kodu launchpad'den alalım:

bzr branch lp:unity trunk

Bu biraz zaman alabilir.
Build Dependancies Kurulumu:

Birlik için inşa-bağımlılıkları kazanmamız gerekiyor. Neyse ki, apt-get bunu önemsiz kılıyor:

sudo apt-get build-dep unity

Birlik Derleme:

Bu adımı önemli ölçüde kolaylaştırmak için bu bash işlevlerini kullanın. Bunları kullanmak için, aşağıdaki bash kodunu giriş dizininizdeki bir dosyaya kopyalayın .bash_functions:

function recreate-build-dir()
{
   rm -r build
   mkdir build
   cd build
}

function remake-autogen-project()
{
    ./autogen.sh --prefix=$HOME/staging --enable-debug
    make clean && make && make install
}

function remake-unity()
{
    recreate-build-dir
    cmake .. -DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DCMAKE_INSTALL_PREFIX=$HOME/staging/ -DGSETTINGS_LOCALINSTALL=ON
    make  && make install
}

function unity-env
{
 export PATH=~/staging/bin:$PATH
 export XDG_DATA_DIRS=~/.config/compiz-1/gsettings/schemas:~/staging/share:/usr/share:/usr/local/share
 export LD_LIBRARY_PATH=~/staging/lib:${LD_LIBRARY_PATH}
 export LD_RUN_PATH=~/staging/lib:${LD_RUN_PATH}
 export PKG_CONFIG_PATH=~/staging/lib/pkgconfig:${PKG_CONFIG_PATH}
 export PYTHONPATH=~/staging/lib/python2.7/site-packages:$PYTHONPATH
}

Şimdi bunu bir terminalde çalıştırın:

echo ". ~/.bash_functions" >> ~/.bashrc

Bu, bir daha sonra bir bash kabuğu açtığınızda yukarıda listelenen işlevlerin kullanımınıza sunulmasını sağlar. Bir terminali kapatıp tekrar açmak zorunda kalmaktan kaçınmak için, bu seferlik manuel olarak okuyabiliriz:

. ~/.bash_functions

Şimdi koşabilmelisin:

remake-unity

dan trunk/dizinde Daha önce yarattı. İşte bu - birlik inşa ediyorsun!


2

Yükleme son zamanlarda daha zorlaştı: GTK Yükü adlı derlemeye yeni bir modül eklendi (ya da XInternAtom'da çökecek). 4.0.1'i kullanmak için bu modülü aktif hale getirmemiz gerekiyor, ancak aktif hale getirilmesi birliğin çökmesine neden olacak 3.8.

İkisini de tutmak zorlaşıyor. Yapmamın yolu:

  • compiz-1 klasörüne gidin ve tüm .so adlarını libgtkloader.so dışında
  • birlik 4.0.1 ile compiz'i yeniden başlatın
  • compizconfig-settings-manager içindeki gtk Load modülünü aktifleştirin
  • kitaplıkları yeniden .so olarak yeniden adlandırın
  • compiz'i yeniden başlatın.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.