如何从源代码构建 Unity?

如何从源代码构建 Unity?

I'd like to know how I would build Unity from source code in the current development release. Please cover the following topics:

  • Which packages are needed to compile Unity?
  • Where would I get the current source code?
  • What are the steps to actually configure and compile Unity?
  • Is it possible to safely run the latest version alongside the version from the repositories?

答案1

Building Unity from Source

在本指南中,您将构建一个独立版本的 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.准备环境

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

提示:大多数现代台式机和笔记本电脑都有几个核心。您可以利用这一点大大加快编译速度。该make命令对此有内置支持,您可以使用—jN切换位置是要并行运行的作业数。一个好的经验法则是运行处理器上 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 中描述的方式准备环境,然后只需输入两个顶级目录nuxunity,运行bzr pull,重建并重新安装。

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

5. 移除 Unity

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


有用链接:

答案2

我根据 Wayland 构建脚本和这些说明制作了一个脚本,以自动安装先决条件、克隆、更新、配置和构建 Unity。

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

答案3

在您的主目录中构建

有时出于测试原因,在主目录中构建 Unity 和 nux 很有用,这样您就可以尝试查看主干中是否修复了某些问题,而无需摆弄软件包和/或 PPA。我问 Jason Smith(Unity Dev)他是如何构建 Unity 的,他向我解释了他的方法:

  1. 确保您拥有所有构建依赖项来自这个答案。

  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并重新登录。

答案4

这里有出色的官方文档 -发展团结

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

建立团结

这些说明将帮助您从源头构建 Unity。但是,有几点需要考虑:

  • 建议您不要将本地构建的任何内容复制到主目录之外。这样做会自找麻烦,尤其是当我们构建整个桌面外壳时。如果您设法破坏了系统范围的桌面外壳,您将是一个非常可悲的程序员!
  • 假设您正在运行精确的 Ubuntu 版本。
  • 还假设您想从主干构建统一(即 lp:unity)。

获取源代码:

如果你尚未安装 Bazaar,请立即安装:

sudo apt-get install bzr

您需要为 Unity 代码创建一个文件夹。请执行以下操作:

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

让我们从启动板获取代码:

bzr branch lp:unity trunk

可能还要等一下。
安装构建依赖项:

我们需要获取 Unity 的构建依赖项。幸运的是,apt-get 使这变得简单:

sudo apt-get build-dep unity

编译 Unity:

使用这组 bash 函数可显著简化此步骤。要使用它们,请将以下 bash 代码复制到主目录中名为 的文件中.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
}

现在在终端中运行它:

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

这可确保下次打开 bash shell 时,上面列出的功能将可用。为了避免关闭并重新打开终端,我们可以手动读取它们一次:

. ~/.bash_functions

您现在可以运行:

remake-unity

trunk/我们之前创建的目录中。就是这样——你正在构建统一!

相关内容