Zh/Tutorial Build

From Apache OpenOffice Wiki
< Zh
Jump to: navigation, search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
        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