linux – “make install” – 更改所有版本的输出目标
我在一些机器上进行
Linux开发,主要是Slackware 13.37和Ubuntu 12.04.我正在测试和验证一些简单的makefile的结果,并想确认make install的输出.但是,在我继续测试之前,我想知道是否有一种可移植的方法来更改任何makefile的make install的默认输出目标.
我希望如果我可以以某种方式暂存我的输出,所以所有输出都转到,例如: /test/bin /test/lib /test/usr/bin 代替: /bin /lib /usr/bin 我知道在QNX开发环境中,例如,我可以设置环境变量,如QCONF_OVERRIDE和INSTALL_ROOT_nto,并保证没有makefile能够安装在除/ test子目录之外的任何地方.在Ubuntu上是否有类似的GCC机制,只需要在我的?/ .bashrc文件中设置一些环境变量?我通过命令行和VIM完成所有工作,所以我不担心漂亮的IDE不理解这些环境变量的情况,因为它们不在.kderc,.gnomerc或等效物中. 谢谢. 解决方法
简答:不.
答案很长: 没有办法为任何Makefile设置输出目的地;必须设计Makefile或构建系统的其他部分才能使其成为可能. make是一个非常简单的工具,因为它的目的是在各种平台上以相同的方式运行.因此,它实际上并不使用Makefile本身不存在的环境变量.这在环境污染和减少魔法方面都很好,但对实现预期目标却不利. 一些上下文:事情有点复杂,部分原因是,与QNX开发环境(基本上是同质的交叉编译环境)不同,大部分使用make的软件(我假设GNU make,但这适用于其他构建的版本是为异构构建和运行环境编写的 – 它可以设计为能够构建不同的发行版,操作系统(Linux,MS Windows,Mac OS X,FreeBSD等),甚至是硬件架构(x86,arm,mips,power,sparc,sh等).有时你是为同一个系统建造的,有时是为不同的系统建造的.不出所料,实际上并没有一种标准的方法可以在各种系统中定义安装路径. Basile在他的回答中提到,对于使用GNU构建系统的程序,你可以使用./configure –prefix = / test.这通常适用于使用Autotools的简单程序.对于使用GNU Autotools的更复杂的程序,如果有更多不同的选项,通常会出现并发症: >交叉编译?您可能希望将前缀设置为将在目标系统上安装的位置(可能是/usr/local),并使用make install DESTDIR = / test. 我相信我现在忘记了更多,但我认为你能得到这个. 请记住,仅适用于使用Autotools的项目.其他项目可能有其他系统(可能命名一个变量或编辑配置文件),所以最好的办法是阅读项目文档,然后失败,Makefile.好玩,嗯? 附:在环境中定义变量不同于将它们作为命令参数传递给make,即SPAM =“alot”make target与make target SPAM =“alot”不同 – 后者将覆盖makefile变量.请参阅Variables from the Environment上的GNU make docs. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |