如何从源代码构建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中所述,然后只需输入顶级目录nuxunity ,运行bzr pull ,rebuild,然后重新安装。

我建议删除并重新build 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. 确保您拥有此答案的所有构建依赖项 。

  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安装源apt-get source unity ,使用sudo apt-get build-dep unity和hack away构建它的依赖项。

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

这里有很好的官方文档 – 开发Unity 。

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

建立团结

这些说明将帮助您从源头建立统一。 但是,有几件事需要考虑:

  • 建议您永远不要复制您在主目录之外本地构建的任何内容。 这样做是在惹麻烦,特别是当我们构建整个桌面shell时。 如果你设法破坏你的系统范围的桌面shell,你将是一个非常悲伤的程序员!
  • 假设您正在运行精确的Ubuntu版本。
  • 还假设您想要从trunk构建统一(即lp:unity)。

获取源代码:

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

 sudo apt-get install bzr 

您将希望自己成为统一代码的文件夹。 做这样的事情:

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

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

 bzr branch lp:unity trunk 

可能还要等一下。
安装Build Dependancies:

我们需要获得团结的构建依赖性。 值得庆幸的是,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时可以使用上面列出的function。 为了避免关闭和重新打开终端,我们可以手动读取它们一次:

 . ~/.bash_functions 

你现在应该能够运行:

 remake-unity 

从我们之前创建的trunk/目录。 就是这样 – 你正在建立团结!

最近安装变得棘手:一个名为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。
    Interesting Posts