当前位置: 首页>>技术教程>>正文


如何从源代码构建Unity?

, ,

问题描述

我想知道如何从当前开发版本的源代码构建Unity。请涵盖以下主题:

  • 编译Unity需要哪些软件包?

  • 我在哪里可以获得当前的源代码?

  • 实际配置和编译Unity的步骤是什么?

  • 是否可以安全地运行最新版本以及存储库中的版本?

最佳解决思路

从源头构建Unity

在本指南中,您将构建一个独立版本的Unity trunk(本地安装在您的主目录中),因此您无需担心从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.准备环境

SOURCEPREFIX替换为您希望源和构建文件的目录。在这个例子中,我把它们放在我的主目录中:

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 ..

提示:大多数现代台式机和笔记本电脑都有几个核心。通过利用这一点,您可以大大加快编译速度。 make命令具有内置支持,您可以使用-jN开关激活,其中N是并行运行的作业数。一个好的经验法则是运行处理器核心数量的2倍。因此,在普通的双核计算机上,您应该运行make -j4以最小化编译时间。

3.建立团结

现在抓住最新的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中所述,然后只需输入top-level目录nuxunity,运行bzr pull,重建并重新安装。

我建议删除并重新创建unity目录中的build目录,以确保没有旧文件弄乱您的构建。

5.删除Unity

删除三个目录$SOURCE$PREFIX~/.compiz-1


有用的链接:

次佳解决思路

我已经根据Wayland构建脚本和这些说明创建了一个脚本,以自动安装必备软件,克隆,更新,配置和构建Unity。

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

第三种解决思路

在您的主目录中构建

有时出于测试原因,在您的主目录中构建Unity和nux非常有用,这样您就可以尝试查看是否在trunk中修复了某些内容而不会破坏软件包和/或PPA。我问杰森史密斯(Unity Dev)他是如何构建Unity的,他向我解释了他的方法:

  1. 确保您拥有此答案中的所有build dependencies

  2. 首先在你家中创建一个名为”staging”的目录,这是我们构建Unity的地方。创建一个准备构建环境的小脚本,用您自己的主目录替换主目录:

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

    我称之为unity.sh,每次我想构建Unity时都会运行它。所以基本上chmod +x unity.sh然后./unity.sh当你想要建立。

  3. 构建nux:

    bzr branch lp:nux
    cd nux
    ./autogen.sh --prefix=/home/jorge/staging
    make -j4
    make install
    cd ..
    
  4. 建立团结:

    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
    

注意:这会在您的主目录中构建nux和unity,这里不需要sudo或类似的东西。

  • 注销并重新登录将自动运行此版本的Unity /nux,因为它是在~/.compiz中构建的

  • 要恢复正常软件包,只需注销,删除~/.compiz并重新登录。

第四种思路

可以在包unity中找到默认环境(Unity)的源代码。使用apt-get source unity安装源代码,使用sudo apt-get build-dep unity构建它并将其删除。

这将让您将发射器放在右侧,底部,顶部等位置。

第五种思路

这里有很好的官方文档 – Developing Unity

以下是构建Unity的摘录 – 从源代码安装和编译

Building Unity

These instructions will help you build unity from source. However, there are a few things to consider:

  • It is recommend that you never copy anything you’ve built locally outside your home directory. Doing so is asking for trouble, especially as we’re building the entire desktop shell. If you manage to ruin your system-wide desktop shell you’ll be a very sad programmer!
  • It is assumed that you’re running the precise Ubuntu release.
  • It is also assumed that you want to build unity from trunk (that is, lp:unity).

Getting the source code:

If you don’t already have Bazaar installed, install it now:

sudo apt-get install bzr 

You will want to make yourself a folder for the unity code. Do something like this:

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

Let’s grab the code from launchpad:

bzr branch lp:unity trunk 

This may take a while.
Installing Build Dependancies:

We need to get the build-dependancies for unity. Thankfully, apt-get makes this trivial:

sudo apt-get build-dep unity 

Compiling Unity:

Use this set of bash functions to make this step significantly easier. To use them, copy the following bash code into a file in your home directory called .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 } 

Now run this in a terminal:

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

This ensures that the next time you open a bash shell the functions listed above will be available to you. To avoid having to close and re-open a terminal, we can read them manually just this once:

. ~/.bash_functions 

You should now be able to run:

remake-unity 

from the trunk/ directory we created earlier. That’s it – you’re building unity!

第六种思路

最近安装变得棘手:一个名为GTK Load的compiz中添加了一个新模块(或者它将在XInternAtom中崩溃)。我们需要激活这个模块才能使用4.0.1,但激活它会崩溃统一3.8。

保持两者都变得越来越困难。我这样做的方式是:

  • 进入compiz-1文件夹并使用.so1重命名所有.so,libgtkloader.so除外

  • 用unity 4.0.1重新启动compiz

  • 在compizconfig-settings-manager中激活gtk Load模块

  • 将库重命名为.so

  • 重启compiz。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1084.html,未经允许,请勿转载。