0%

从一个共同的源代码构建多个版本

从一个共同的源代码构建多个版本

脚本 install-difx 现在允许从 Git 源代码树之外的目录层次结构构建和安装 DiFX。
例如,如果您需要为多个架构编译 DiFX,您可以为每个架构拥有独立的构建和根目录。

步骤如下:

  1. 运行 git pull 以使您的源代码保持最新(或不更新)
  2. 如以前一样准备并 source 一个设置脚本
  3. 在某个地方创建一个构建目录
  4. 在这个构建目录中运行 /fullpathto/install-difx`

如果你以前(大多数开发者都是这样)在源码目录中构建,第一个配置过程会抱怨“源已经配置好了,运行 make distclean”并停止。
(这是一个功能,旨在防止您意外地将一个架构的构建错误地配置为另一个架构。)
由于 DiFX 项目有多个子目录,修复这个问题可能会很繁琐,因此有一个选项(--pristine)可以为您完成这项工作。
install-difx 有很多选项;使用 --help 查看简要说明。

安装示例

你可能计划将根目录、源目录和构建目录都放在某个父目录中,例如 $DIFXROOT$DIFXROOT/../difx-src$DIFXROOT/../difx-build
因此,首先我们要更新源代码并检查我们的修改:

1
2
3
4
$ source setup-difx.bash
$ cd $DIFXROOT/../difx-src
$ git pull
$ git log

然后我们创建一个构建目录。install-difx 在其中的一个目录(pkgconfig)中添加了一个目录,以便您可以在那里放置自定义的 pkg-config 文件,以便处理一些特殊情况(例如 IPP):

1
2
3
4
5
6
7
$ cd $DIFXROOT/..
$ mkdir difx-build
$ cd difx-build
$ mkdir pkgconfig
$ cd pkgconfig
$ $DIFXROOT/../difx-svn/setup/genipppc $IPPROOT
$ cd ..

If you have previously been building in the SVN directory, you will need
to remove some configuration files (e.g. config.status) left over
from your last install with
如果你以前在源码目录中构建过,你需要删除一些配置文件(例如 config.status):

1
$ $DIFXROOT/../difx-svn/setup/install-difx --pristine

有一些独立的包在 DiFX 项目中,每个包都需要系统配置。如果你经常重建代码,install-difx 可以创建一个缓存来加快这个配置过程:

$DIFXROOT/../difx-svn/setup/install-difx -v --cache=difx-config-cache

其中 -v 参数提供了一些额外的诊断信息,说明正在创建或遍历哪些目录。

一旦构建完成(你会看到 "Done!"),你可以删除构建目录。或者你可以留下它,以备下次 git pull 和构建循环。install-difx 的另一个有用的选项是 --targ 选项,它允许你将某些目标传递给树中的所有 make 步骤。例如:

$DIFXROOT/../difx-svn/setup/install-difx -v --targ='-n'

将遍历 DiFX 构建层次结构,并告诉你它将构建什么。 (即在每个 Makefile 中调用 make -n。)

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道