如何从源代码构建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.准备环境
将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开关激活,其中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中所述,然后只需输入顶级目录nux
和unity
,运行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的,他向我解释了他的方法:
-
确保您拥有此答案的所有构建依赖项 。
-
首先在你家中创建一个名为“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
并重新登录。
可以在程序包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。