Linker 指定链接库的makefile位置

Linker 指定链接库的makefile位置,linker,makefile,Linker,Makefile,我最近在一个项目中偶然发现了这一点。在包A中,有一个必需的配置选项--package-B-makefile-location,A的makefile从中借用变量值 这是一种具有优点的常见设计模式吗?在我看来,B的包源代码与编译A的二进制代码一样重要。可能有什么原因我不想篡改它吗 谢谢 Andrew就其本身而言,这是一种常见且有用的设计模式,但它也可能像其他任何模式一样被滥用 我不确定我是否理解你问题的第二部分,但是如果makefiles设计得很好,那么你对B的makefiles所做的任何更改如果不

我最近在一个项目中偶然发现了这一点。在包
A
中,有一个必需的配置选项
--package-B-makefile-location
A
的makefile从中借用变量值

这是一种具有优点的常见设计模式吗?在我看来,
B
的包源代码与编译
A
的二进制代码一样重要。可能有什么原因我不想篡改它吗

谢谢


Andrew

就其本身而言,这是一种常见且有用的设计模式,但它也可能像其他任何模式一样被滥用


我不确定我是否理解你问题的第二部分,但是如果makefiles设计得很好,那么你对B的makefiles所做的任何更改如果不破坏B,也不会破坏A。

一个包需要预先安装其他包的情况远非闻所未闻,你必须指定这些位置

例如,在构建GCC(4.5.2)时,如果默认情况下找不到GMP、MPFR和MPC库,则需要指定它们的位置

可扩展的复杂系统—Perl、Apache、Tcl/Tk、PHP—以各种方式(Config.pm for Perl、apxs for Apache等)向用户提供配置数据,但这些配置数据对相关模块至关重要

我的怀疑是,您的包A需要一些与包B相关的配置数据,但是没有一个成熟的系统来提供这些数据。作为一种解决方法,包a需要查看封装在makefile中的配置数据


需要makefile并不常见;需要关于其他软件包的一些信息并不少见。

如果我唯一想要的是一个共享对象库,你认为我可以开始删除这个makefile依赖项吗?@ajwood:可能吧。如果您的软件包A只需要知道软件包B的共享库和标头安装在何处,那么可以为软件包A配置该位置,如果用户没有指定,则使用合适的默认值-可能是
/usr/local
(这意味着头应该在
/usr/local/include
中,库应该在
/usr/local/lib
中)。