Как мне собрать Unity из исходного кода?

Я хотел бы знать, как бы я собирал Unity из исходного кода в текущем выпуске разработки. Пожалуйста, рассмотрите следующие темы:

  • Какие пакеты необходимы для компиляции Unity?
  • Где я могу получить текущий исходный код?
  • Какие шаги нужно сделать конфигурировать и компилировать Unity?
  • Можно ли безопасно запустить последнюю версию вместе с версией из репозиториев?
66
задан 11 December 2013 в 14:45

6 ответов

Сборка Unity из Source

В этом руководстве вы соберете отдельную версию ствола Unity (локально установленного в вашем домашнем каталоге), так что вам не нужно будет беспокоиться о повреждении версии из репозиториев Ubuntu, а также вам не нужно будет получать права root на протяжении всего процесса (за исключением установки сборочных зависимостей).

0. Установка сборочных зависимостей

Для установки всех необходимых сборочных зависимостей нужно выполнить этот процесс один раз:

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

Если у вас включены репозитории исходного кода (также известные как deb-src), вы можете вместо этого использовать:

sudo apt-get build-dep unity

1. Подготовка среды

Замените SOURCE и PREFIX каталогами, в которые вы хотите отправлять файлы исходных текстов и сборки. В этом примере я положил оба в мой домашний каталог:

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. Сборка Nux

Вероятно, вам понадобится взять последнюю версию Nux, чтобы получить ствол Unity для компиляции:

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

Tip: Большинство современных настольных компьютеров и ноутбуков имеют несколько ядер. Вы можете значительно ускорить компиляцию, воспользовавшись этим. Команда make имеет встроенную поддержку, которую можно активировать с помощью переключателя -jN, где N - это количество заданий, выполняемых параллельно. Хорошее эмпирическое правило - запускать в 2 раза больше ядер на вашем процессоре. Таким образом, на обычном двухядерном компьютере вы должны запустить make -j4, чтобы свести к минимуму время компиляции.

3. Сборка Unity

Теперь возьмите последний код Unity и соберите его:

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

Вот так, выходите из системы и возвращайтесь обратно, и вы должны запустить последний Unity. Или же , можно запустить

setsid $PREFIX/bin/unity

4. Обновление

Убедитесь, что вы подготовили окружение, как описано в шаге 1, затем просто введите оба каталога верхнего уровня nux и unity, запустите bzr pull, переустановите и переустановите.

Предлагаю удалить и воссоздать каталог build в каталоге unity, чтобы убедиться, что старые файлы не мешают вашей сборке.

5. Удаление единства

Удалить три каталога $SOURCE, $PREFIX и ~/.compiz-1.


Полезная ссылка:

64
ответ дан 11 December 2013 в 14:45

Я сделал скрипт на основе скрипта сборки Wayland и этих инструкций для автоматизации установки предпосылок, клонирования, обновления, конфигурирования и сборки Unity.

https://github.com/bitshifter/Unity-Build/raw/master/build-unity.sh

9
ответ дан 11 December 2013 в 14:45

Здесь есть отличная официальная документация - Разработка Unity .

Вот отрывок из этого на сборка Unity - установка из исходных кодов и компиляция

Сборка Unity

Эти инструкции помогут вам построить единство из исходных текстов. Тем не мение, Вот несколько вещей, которые следует учитывать:

  • Никогда не рекомендуется копировать что-либо, созданное локально, за пределами вашего домашнего каталога. Это напрашивается на неприятности, тем более что мы создаем всю оболочку рабочего стола. Если ты справишься испортить общесистемную оболочку рабочего стола вам будет очень грустно программист!
  • Предполагается, что вы используете именно тот выпуск Ubuntu.
  • Также предполагается, что вы хотите построить единство из магистрали (то есть lp: unity).

Получение исходного кода:

Если у вас еще не установлен Bazaar, установите его сейчас:

 sudo apt-get install bzr
 

Вы захотите создать себе папку для кода единства. Делать примерно так:

 mkdir -p ~ / code / unity
cd ~ / код / ​​единство
 

Давайте возьмем код с панели запуска:

 bzr branch lp: unity trunk
 

Это может занять некоторое время.
Установка зависимостей сборки:

Нам нужно получить зависимости сборки для единства. К счастью, apt-get делает это тривиальным:

 sudo apt-get build-dep unity
 

Компиляция Unity:

Используйте этот набор функций bash, чтобы значительно упростить этот шаг. Чтобы использовать их, скопируйте следующий код на bash в файл у себя дома каталог с именем .bash_functions :

 функция воссоздать-build-dir ()
 {
  rm -r build
  mkdir build
  cd build
 }

функция remake-autogen-project ()
 {
  ./autogen.sh --prefix = $ HOME / staging --enable-debug
  очистить && сделать && сделать установку
 }

функция remake-unity ()
 {
  воссоздать-построить-каталог
  cmake .. -DCMAKE_BUILD_TYPE = Отладка -DCOMPIZ_PLUGIN_INSTALL_TYPE = local -DCMAKE_INSTALL_PREFIX = $ HOME / staging / -DGSETTINGS_LOCALINSTALL = ON
  сделать && сделать установку
 }

функция unity-env
 {
  экспорт PATH = ~ / staging / bin: $ PATH
  экспорт XDG_DATA_DIRS = ~ / .config / compiz-1 / gsettings / schemas: ~ / staging / share: / usr / share: / usr / local / share
  экспорт LD_LIBRARY_PATH = ~ / staging / lib: $ {LD_LIBRARY_PATH}
  экспорт LD_RUN_PATH = ~ / staging / lib: $ {LD_RUN_PATH}
  экспорт PKG_CONFIG_PATH = ~ / staging / lib / pkgconfig: $ {PKG_CONFIG_PATH}
  экспорт PYTHONPATH = ~ / staging / lib / python2.7 / site-packages: $ PYTHONPATH
 }
 

Теперь запустите это в терминале:

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

Это гарантирует, что при следующем открытии оболочки bash функции перечисленные выше будут вам доступны. Чтобы избежать закрытия и повторно откройте терминал, мы можем прочитать их вручную только один раз:

.  ~ / .bash_functions
 

Теперь вы можете запустить:

 remake-unity
 

из каталога trunk / , который мы создали ранее. Вот и все - ты построение единства!

4
ответ дан 11 December 2013 в 14:45

Исходный код для среды по умолчанию (Unity) можно найти в пакете unity . Установите исходный код с помощью apt-get source unity , зависимостей для его сборки с помощью sudo apt-get build-dep unity и удалите его.

Это позволит вам разместить панель запуска справа, снизу, вверху и т. д.

6
ответ дан 11 December 2013 в 14:45

Сборка в вашем домашнем каталоге

Иногда по тестовым причинам полезно собрать Unity и nux в вашем домашнем каталоге, чтобы вы могли попробовать посмотреть, исправлено ли что-нибудь в стволе, не тратя время на пакеты и/или PPAs. Я спросил Jason Smith (Unity Dev), как он собирает Unity, и он объяснил мне свой метод:

  1. Убедитесь, что у вас есть все сборочные зависимости из этого ответа.

  2. Сначала сделайте каталог в вашем доме под названием "staging", вот где мы будем собирать Unity. Создайте небольшой скрипт, который подготовит среду сборки, замените домашний каталог на ваш собственный:

    #!/bin/bash.
    
    PREFIX=/home/jorge/staging
    
    экспортировать XDG_DATA_DIRS="$PREFIX/акция:$XDG_DATA_DIRS".
    экспорт LD_LIBRARY_PATH="$PREFIX/lib/".
    экспортировать PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig/".
    

    Я называю это unity.sh и запускаю его каждый раз, когда хочу построить Единство. Так что в основном chmod +x unity.sh, а затем ./unity.sh, когда вы хотите построить.

  3. Build nux:

    bzr branch lp:nux
    компакт-диск
    ./autogen.sh --prefix=/home/jorge/staging
    марка -j4
    произвести установку
    компакт-диск ...
    
  4. Построить Единство:

    bzr ветвь lp:единство
    единство компакт-дисков
    мкдирское строительство
    создание компакт-дисков
    cmake ... -DCMAKE_INSTALL_PREFIX=/home/jorge/staging/DCMAKE_BUILD_TYPE=Debug -DCOMPIZ_PLUGIN_INSTALL_TYPE=local -DGSETTINGS_LOCALINSTALL=ON
    марка -j4
    произвести установку
    

ПРИМЕЧАНИЕ: Это сборка nux и единства в вашем домашнем каталоге, здесь не нужно sudo или что-то в этом роде.

  • Выход и обратно запустят эту версию Unity/nux автоматически, так как она была собрана в ~/.compiz
  • Чтобы вернуться к обычным пакетам, просто выйдите из системы, удалите ~/. compiz и снова войдите в систему.
7
ответ дан 11 December 2013 в 14:45

В последнее время установка стала более сложной: в compiz был добавлен новый модуль с именем GTK Load (иначе он выйдет из строя в XInternAtom). Нам нужно активировать этот модуль, чтобы использовать 4.0.1, но его активация приведет к сбою unity 3.8.

Трудно удержать их обоих. Я сделал это следующим образом:

  • зайти в папку compiz-1 и переименовать все .so в .so1, кроме libgtkloader.so
  • перезапустить compiz с единством 4.0.1
  • активировать модуль загрузки gtk в compizconfig-settings-manager
  • переименуйте библиотеки обратно в .so
  • перезапустите compiz.
2
ответ дан 11 December 2013 в 14:45

Другие вопросы по тегам:

Похожие вопросы: