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 中描述的方式准备环境,然后只需输入两个顶级目录nux
和unity
,运行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 的,他向我解释了他的方法:
确保您拥有所有构建依赖项来自这个答案。
首先在您的主目录中创建一个名为“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
当你想构建时。构建 nux:
bzr branch lp:nux cd nux ./autogen.sh --prefix=/home/jorge/staging make -j4 make install cd ..
建立团结:
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/
我们之前创建的目录中。就是这样——你正在构建统一!