从一个共同的源代码构建多个版本
脚本 install-difx
现在允许从 Git 源代码树之外的目录层次结构构建和安装 DiFX。
例如,如果您需要为多个架构编译 DiFX,您可以为每个架构拥有独立的构建和根目录。
步骤如下:
- 运行
git pull
以使您的源代码保持最新(或不更新) - 如以前一样准备并
source
一个设置脚本 - 在某个地方创建一个构建目录
- 在这个构建目录中运行
/fullpathto/
install-difx`
如果你以前(大多数开发者都是这样)在源码目录中构建,第一个配置过程会抱怨“源已经配置好了,运行 make distclean”并停止。
(这是一个功能,旨在防止您意外地将一个架构的构建错误地配置为另一个架构。)
由于 DiFX 项目有多个子目录,修复这个问题可能会很繁琐,因此有一个选项(--pristine
)可以为您完成这项工作。install-difx
有很多选项;使用 --help
查看简要说明。
安装示例
你可能计划将根目录、源目录和构建目录都放在某个父目录中,例如 $DIFXROOT
、$DIFXROOT/../difx-src
和 $DIFXROOT/../difx-build
。
因此,首先我们要更新源代码并检查我们的修改:
1 | $ source setup-difx.bash |
然后我们创建一个构建目录。install-difx
在其中的一个目录(pkgconfig
)中添加了一个目录,以便您可以在那里放置自定义的 pkg-config
文件,以便处理一些特殊情况(例如 IPP):
1 | $ cd $DIFXROOT/.. |
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
。)