避免递归进行安装

Jes*_*Jes 10 automake autotools configure

我正在使用构建项目autotool。基本上,该项目取决于几个由共同管理的第三方项目autotool

my_project/
my_project/3rd-party/
Run Code Online (Sandbox Code Playgroud)

为了启用递归构建,我AC_CONFIG_SUBDIRS在我的configure.ac中添加了宏:

AC_CONFIG_SUBDIRS([3rd-party/gtest-1.7.0])
AC_CONFIG_SUBDIRS([3rd-party/libstatgrab-0.91])
AC_CONFIG_SUBDIRS([3rd-party/leveldb-1.2.0])
Run Code Online (Sandbox Code Playgroud)

这给了我递归构建,链接和清理的便利。但是,当我点击时,我不想安装所有这些第三方库,而是我自己的项目make install。反正我有摆脱这种特殊的递归?

Sim*_*sch 4

我认为如果您不更改第三个目录中的任何 makefile(您甚至可以从主 Makefile 中执行此操作,只需通过 [ seddirty hack] 重命名目标),您就不能简单地删除这一单个文件。

你在第 3 方目录中内部调用配置,不是吗?如果是,您可以设置prefix(或data-prefix3rd exec-prefix) different. It may be a good idea in any case to create a-party-build` 目录,并在那里构建 3rd-party 内容并更改安装前缀以使用它。

您没有要求它,但“解决方案”是不同的:从您的主 makefile 中删除第 3 方内容:

  • 创建一个build_dep.sh
  • 这可能会下载和/或解压并配置并制作第 3 方内容
  • 您的配置脚本(如果有)将检查它们是否存在并且正在工作,如果没有:则搜索系统目录。

这既解决了问题,又允许使用已经存在的库/工具,并为用户提供了使用不同版本的选项,同时保持简单的“您可以从主目录中获取所有内容,而不需要获取/自己构建依赖关系”