如何从源代码构建Unity?


64

我想知道如何在当前开发版本中从源代码构建Unity。请介绍以下主题:

  • 编译Unity需要哪些软件包?
  • 我在哪里可以获得当前的源代码?
  • 实际配置和编译Unity的步骤是什么?
  • 是否可以安全地运行最新版本以及存储库中的版本?

Answers:


65

从源代码构建团结

在本指南中,您将构建一个单独版本的Unity主干(本地安装到您的主目录),因此您无需担心会从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启用了源代码存储库(aka ),则可以使用:

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

您可能需要获取最新版本的NuxUnity中继才能进行编译:

bzr branch lp:nux
cd nux
./autogen.sh --disable-examples --disable-gputests --disable-tests --prefix="$PREFIX"
make -j4
make install
cd ..

提示:大多数现代台式机和笔记本电脑都有几个核心。您可以利用此功能大大加快编译速度。该make命令对此具有内置支持,您可以使用-jN开关激活它,其中N是要并行运行的作业数。一个好的经验法则是运行处理器内核数的两倍。因此,在普通的双核计算机上,您应该运行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


有用的链接:


我认为有一个非常重要的事情,就是克隆我们当前使用的版本,例如在Ubuntu 12.04上,我试图克隆Nux的最新版本,sharedptr但由于使用了Nux而变得混乱了,但是12.04上的gcc似乎没有支持,或需要将一些标志添加到生成文件中。因此,克隆适合我系统的确切版本非常重要。
Muhammad Hewedy 2013年

第0部分中的任何一个都不在14.04上工作...
Goddard

xserver-xorg-video-dummy:取决于:xorg-video-abi-15取决于:xser​​ver-xorg-core(> = 2:1.14.99.902)
Goddard


7

在您的主目录中构建

有时出于测试原因,在您的主目录中构建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. 构建Unity:

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

6

可以在包中找到默认环境(Unity)的源代码unity。使用安装源apt-get source unity,并使用依赖项进行构建sudo apt-get build-dep unity并破解。

这样您就可以将启动器定位在右侧,底部,顶部等位置。


您能否扩展一下如何精确更改位置?只需知道要修改的文件或配置即可。
PitaJ

4

这里有出色的官方文档- 开发Unity

这是构建Unity的摘录-从源代码安装和编译

建立团结

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

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

获取源代码:

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

sudo apt-get install bzr

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

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

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

bzr branch lp:unity trunk

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

我们需要获得构建依赖性的统一性。幸运的是,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/我们之前创建的目录中。就是这样–您正在建立团结!


2

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

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

  • 进入compiz-1文件夹,并用.so1重命名所有.so,但libgtkloader.so除外
  • 用unity 4.0.1重新启动compiz
  • 在compizconfig-settings-manager中激活gtk Load模块
  • 将库重命名为.so
  • 重新启动compiz。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.