Zh/Tutorial Build

From Apache OpenOffice Wiki
< Zh
Jump to: navigation, search
        OpenOffice.org构建指南


"build svx", "build sfx2", "build sw", "build sd"? build命令是什么呢?
好问题, 让我们来详细解释这些,我们第一步在命令行输入'which build',  什么也不返回, 第二步试一下'alias build' 有以下返回内容:

alias build='perl /home/raul/ooo-build/build/src680-m65/solenv/bin/build.pl'

  我们得到的这些别名是如何设置上的呢? 来源自LinuxIntelEnvSet.sh, 这个文件名说明:它是在Intel平台上设置Linux编译OOo环境的。这同样帮我们理解其他的编译环境,例如SolarisSparcEnvSet.sh. 我所理解的是,这个文件是OOo配置处理的最终结果。他用于构建的整个过程。你可以看这个文件查看其他的设置值。 

  构建(build)是perl脚本,在顶级(solenv)环境工程,大多数构建工具都在里面。
  它是如何工作的,让我们通过最酷的方式来学习它。让我们在OOo中新增一个顶级工程。我们可以发挥最大想象力和创造性, 给我们的新的顶级工程起一个非常酷的名字如"drum-roll"或者"helloworld", 所以我们开始在顶级目录下输入"mkdir helloworld",并进入这个目录[所以我们工程的路径现在是"/home/raul/ooo-build/src680-m65/helloworld", 进一步的引用这个工程可是使用短名字例如helloworld/dir-name/file-name].
  现在,通过输入build命令来构件我们的新工程[虽然里面什么也没有]. 会发生以下情况。
  build -- version: 1.130
 ERROR: Found no project to build

  这表示一个真正的问题。我们现在难道没有工程吗? 让我们来看这个错误发生在什么地方,如何来解决这个问题。 第一步,我们进入solenv/目录下,这个目录是上面提到的编译工具目录,我们怀疑错误来源就在这儿。
  我们继续查找错误源: 输入以下两个命令的一个。

grep -rn "no project to build" * find solenv/ -exec grep -Hn "no project to build" {} \;

   来源在bin/build.pl, 我们查看这个文件,发现build.pl脚本在prj目录下寻找build.lst文件,因此失败了。所以我们输入命令"touch prj/build.lst"新建一个,然后再次build.
  
   没有任何事情发生,让我们想想,我们的目的是建立一个可以连接的库。我们仅仅做这些,我们可以通过非常短的路达到目标。我们可以看做同样事情和相似事情的其他模块。有一句话说的好,"优秀的艺术家需要拷贝,伟大的艺术家需要窃取",阿门。

xh XmlSearch : external codemaker NULL xh XmlSearch\src\com\sun\xmlsearch nmake - all xs NULL

   我们从XmlSearch/prj/build.lst得到灵感,写下我们自己的build.lst如下:

hw helloworld : NULL hw helloworld\source nmake - all hw_src NULL

它是相当简单的文件,有点像黑客指导。第一行是指示它不依赖任何其他顶级工程。同XmlSearch/文件指示那样,它依赖external/和codemaker工程。这也说明那些工程必须在这个工程之前编译。 第二行继续指示当前顶级工程所要编译的和编译顺序。我们仅是简单地说helloworld/source目录需要编译。它是尤其简单没有内部的编译顺序。复杂的工程例如fpicker,就需要编译顺序。

   我们已经告诉build.pl所需要做的内容,让我们再次"build":

build -- version: 1.130 ERROR: /home/raul/ooo-build/build/src680-m65/helloworld/source not found!

(新版本的编译,d.lst不是必需的,现象和原文中不同,略过一段未翻译) 好了,我们可以创建所想要的编译到我们库中的源码目录。所以我们输入"mkdir source",再次build.

build -- version: 1.130 /home/raul/ooo-build/build/src680-m65/helloworld/source Error: No makefile.mk found!

  我们到达了一半。 build脚本到达了源代码目录,将构建我们的工程。这次就到这里。 然我们下次再修改它。
Personal tools