Wie baue ich Unity aus dem Quellcode auf?

64

Ich möchte wissen, wie ich Unity aus dem Quellcode in der aktuellen Entwicklungsversion erstellen würde. Bitte decken Sie die folgenden Themen ab:

  • Welche Pakete werden benötigt, um Unity zu kompilieren?
  • Woher bekomme ich den aktuellen Quellcode?
  • Was sind die Schritte, um Unity tatsächlich zu konfigurieren und zu kompilieren?
  • Ist es möglich, die neueste Version sicher neben der Version aus den Repositorys auszuführen?
Drehmoment
quelle

Antworten:

65

Einheit aus der Quelle schaffen

In diesem Handbuch erstellen Sie eine separate Version von Unity-Trunk (lokal in Ihrem Home-Verzeichnis installiert), sodass Sie sich nicht um die Beschädigung der Version aus den Ubuntu-Repositorys sorgen müssen und auch keine Root-Berechtigungen im gesamten Verzeichnis benötigen gesamter Prozess (außer für die Installation der Build-Abhängigkeiten).

0. Build-Abhängigkeiten installieren

Sie müssen dies einmal ausführen, um alle erforderlichen Build-Abhängigkeiten zu installieren:

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

Wenn Sie Quellcode-Repositorys (aka deb-src) aktiviert haben, können Sie stattdessen Folgendes verwenden:

sudo apt-get build-dep unity

1. Vorbereiten der Umgebung

Ersetzen Sie SOURCEund PREFIXdurch die Verzeichnisse, in die Sie die Quell- und Builddateien einfügen möchten. In diesem Beispiel habe ich beide in mein Home-Verzeichnis gestellt:

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. Gebäude Nux

Sie müssen wahrscheinlich die neueste Version von herunterladen Nux, um Unity-Trunk zu kompilieren:

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

Tipp : Die meisten modernen Desktops und Laptops verfügen über mehrere Kerne. Sie können die Kompilierung erheblich beschleunigen, indem Sie dies ausnutzen. Der makeBefehl verfügt über eine integrierte Unterstützung, die Sie mit der Option -jN aktivieren können , wobei N für die Anzahl der Jobs steht, die parallel ausgeführt werden sollen. Als Faustregel gilt, dass Sie die doppelte Anzahl an Kernen auf Ihrem Prozessor ausführen müssen. Auf einem normalen Dual-Core-Computer sollten Sie daher ausführen, make -j4um die Kompilierungszeit zu minimieren.

3. Einheit aufbauen

Holen Sie sich jetzt den neuesten Unity-Code und erstellen Sie ihn:

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

Das war's, melden Sie sich ab und wieder an, und Sie sollten die neueste Unity-Version ausführen. Alternativ können Sie auch laufen

setsid $PREFIX/bin/unity

4. Aktualisierung

Stellen Sie sicher, dass Sie die Umgebung wie in Schritt 1 beschrieben vorbereiten, geben Sie einfach beide Verzeichnisse der obersten Ebene ein nuxund unityführen Sie sie aus, erstellen Sie sie bzr pullneu und installieren Sie sie erneut.

Ich empfehle, das buildVerzeichnis im unityVerzeichnis zu entfernen und neu zu erstellen, um sicherzustellen, dass keine alten Dateien mit Ihrem Build in Konflikt geraten.

5. Einheit entfernen

Entfernen Sie die drei Verzeichnisse $SOURCE, $PREFIXund ~/.compiz-1.


Nützlicher Link:

Drehmoment
quelle
Ich denke, es ist sehr wichtig, die aktuell verwendete Version zu klonen, zum Beispiel unter Ubuntu 12.04. Ich habe versucht, die neueste Version von Nux zu klonen, und sie ist durcheinander geraten, weil Nux sie verwendet sharedptrhat unterstütze oder benötige ein Flag, um zu den make-Dateien hinzugefügt zu werden. Das Klonen der genauen Version, die für mein System geeignet ist, ist daher sehr wichtig.
Muhammad Hewedy
Keiner von Teil 0 arbeitet am 14.04 ...
Goddard
xserver-xorg-video-dummy: Hängt ab von: xorg-video-abi-15 Hängt ab von: xserver-xorg-core (> = 2: 1.14.99.902)
Goddard
7

Erstellen Sie in Ihrem Home-Verzeichnis

Manchmal ist es aus Testgründen nützlich, Unity und nux in Ihrem Home-Verzeichnis zu erstellen, damit Sie versuchen können, festzustellen, ob in trunk etwas behoben ist, ohne mit Paketen und / oder PPAs herumzuspielen. Ich habe Jason Smith (Unity Dev) gefragt, wie er Unity baut, und er hat mir seine Methode erklärt:

  1. Stellen Sie sicher, dass Sie alle Build-Abhängigkeiten aus dieser Antwort haben.

  2. Erstellen Sie zuerst ein Verzeichnis in Ihrem Zuhause mit dem Namen "Staging". Hier erstellen wir Unity. Erstellen Sie ein kleines Skript, das die Build-Umgebung vorbereitet, und ersetzen Sie das Ausgangsverzeichnis durch Ihr eigenes:

    #!/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/"
    

    Ich nenne das unity.shund starte es jedes Mal, wenn ich Unity bauen will. Also im Grunde chmod +x unity.shund dann, ./unity.shwenn Sie bauen wollen.

  3. Build nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. Einheit aufbauen:

    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
    

HINWEIS: Dadurch werden Nux und Unity in Ihrem Home-Verzeichnis erstellt. Hier ist kein Sudo oder ähnliches erforderlich.

  • Beim Abmelden und erneuten Anmelden wird diese Version von Unity / nux automatisch ausgeführt, seit sie eingebaut wurde ~/.compiz
  • Um zu den normalen Paketen zurückzukehren, melden Sie sich einfach ab, löschen Sie sie ~/.compizund melden Sie sich erneut an.
Jorge Castro
quelle
6

Der Quellcode für die Standardumgebung (Unity) ist im Paket enthalten unity. Installieren Sie den Quellcode mit apt-get source unityden Abhängigkeiten, mit denen er erstellt werden soll, sudo apt-get build-dep unityund hacken Sie ihn ab.

Auf diese Weise können Sie den Launcher rechts, unten, oben usw. positionieren.

ish
quelle
Könnten Sie genauer erläutern, wie Sie die Position ändern können? Nur zu wissen, welche Datei oder Konfiguration geändert werden muss, wäre fantastisch.
PitaJ
4

Hier gibt es eine ausgezeichnete offizielle Dokumentation - Developing Unity .

Hier ist ein Auszug davon über das Erstellen von Unity - von der Quelle installieren und kompilieren

Einheit aufbauen

Diese Anweisungen helfen Ihnen dabei, Einheit aus der Quelle zu schaffen. Es gibt jedoch ein paar Dinge zu beachten:

  • Es wird empfohlen, nichts zu kopieren, was Sie lokal außerhalb Ihres Home-Verzeichnisses erstellt haben. Dies ist problematisch, zumal wir die gesamte Desktop-Shell erstellen. Wenn Sie es schaffen, Ihre systemweite Desktop-Shell zu ruinieren, werden Sie ein sehr trauriger Programmierer!
  • Es wird davon ausgegangen, dass Sie die genaue Ubuntu-Version verwenden.
  • Es wird auch davon ausgegangen, dass Sie die Einheit aus dem Stamm aufbauen möchten (d. H. Lp: Einheit).

Den Quellcode erhalten:

Wenn Sie Bazaar noch nicht installiert haben, installieren Sie es jetzt:

sudo apt-get install bzr

Sie möchten sich einen Ordner für den Unity-Code erstellen. Mach so etwas:

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

Lassen Sie uns den Code vom Launchpad holen:

bzr branch lp:unity trunk

Das kann eine Weile dauern.
Build-Abhängigkeiten installieren:

Wir brauchen die Build-Abhängigkeiten für die Einheit. Zum Glück macht apt-get Folgendes trivial:

sudo apt-get build-dep unity

Unity kompilieren:

Verwenden Sie diese Bash-Funktionen, um diesen Schritt erheblich zu vereinfachen. Kopieren Sie dazu den folgenden Bash-Code in eine Datei in Ihrem Ausgangsverzeichnis mit dem Namen .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
}

Führen Sie dies nun in einem Terminal aus:

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

Dies stellt sicher, dass Ihnen die oben aufgeführten Funktionen beim nächsten Öffnen einer Bash-Shell zur Verfügung stehen. Um zu vermeiden, dass ein Terminal geschlossen und erneut geöffnet werden muss, können wir sie nur einmal manuell lesen:

. ~/.bash_functions

Sie sollten jetzt in der Lage sein, Folgendes auszuführen:

remake-unity

aus dem trunk/Verzeichnis, das wir zuvor erstellt haben. Das war's - du bildest die Einheit!

Nitin Venkatesh
quelle
2

Die Installation wurde in letzter Zeit kniffliger: Es wurde ein neues Modul namens GTK Load zum Compiz hinzugefügt (oder es stürzt in XInternAtom ab). Wir müssen dieses Modul aktivieren, um 4.0.1 verwenden zu können, aber wenn wir es aktivieren, stürzt Unity 3.8 ab.

Es wird schwierig, beide zu behalten. So habe ich es gemacht:

  • Gehe in den Ordner compiz-1 und benenne alle .so durch .so1 um, mit Ausnahme von libgtkloader.so
  • Starten Sie compiz mit Unity 4.0.1 neu
  • aktiviere das gtk Load Modul im compizconfig-settings-manager
  • Benennen Sie die Bibliotheken wieder in .so um
  • compiz neu starten.
Yann
quelle