我最近偶然发现了这个项目,我正在处理这个项目。在包A
中,有一个必需的配置选项--package-B-makefile-location
,其中A
的makefile借用变量值。指定makefile位置来链接库
这是一个常见的设计模式,有其优点吗?在我看来,B
的封装源与编译A
的二进制文件同样重要。可能有我不想篡改它的原因吗?
感谢,
安德鲁
我最近偶然发现了这个项目,我正在处理这个项目。在包A
中,有一个必需的配置选项--package-B-makefile-location
,其中A
的makefile借用变量值。指定makefile位置来链接库
这是一个常见的设计模式,有其优点吗?在我看来,B
的封装源与编译A
的二进制文件同样重要。可能有我不想篡改它的原因吗?
感谢,
安德鲁
对于需要预装其他软件包的软件包而言,这是远远闻所未闻的,您必须指定这些位置。
例如,构建GCC(4.5.2),您需要指定GMP,MPFR和MPC库的位置(如果默认情况下不会找到它们)。可扩展的复杂系统 - Perl,Apache,Tcl/Tk,PHP - 以各种方式向用户提供配置数据(Perl的Config.pm,Apache的apxs等),但配置数据对于从属模块。
我怀疑你的软件包A需要一些与软件包B有关的配置数据,但是没有一个完整的系统来提供它。作为一种解决方法,软件包A需要查看封装在makefile中的配置数据。
这是不常见的需要makefile;需要一些关于其他软件包的信息并不罕见。
这是一个常见的和有用的设计模式尽可能去,但它可能会被滥用像任何其他。
我不确定我是否理解你问题的第二部分,但是如果makefile设计得很好,那么你对B的makefile的任何修改都不会破坏B,也不会破坏A。
如果我唯一要做的就是共享对象库,那么您认为可以安全地假设我可以开始取出这个makefile依赖关系吗? – ajwood 2010-12-22 01:07:19