【问题标题】:What's the best way to set MACOSX_DEPLOYMENT_TARGET?设置 MACOSX_DEPLOYMENT_TARGET 的最佳方法是什么?
【发布时间】:2015-11-23 16:29:01
【问题描述】:

长期以来,Perl 社区一直依赖MACOSX_DEPLOYMENT_TARGET=10.3 构建所有 Perl。但现在,有了 El Capitan 测试版,it no longer works。似乎他们应该把它撞起来,但到什么程度呢?有没有办法以编程方式将其设置为当前正在构建 Perl 的 OS X 版本支持的最早版本?还是有其他方法可以动态设置它?还是必须是静态的并定期更新?如果是后者,它对旧版 OS X 的构建有何影响?

【问题讨论】:

  • 我不知道有人在运行 MacOS 10.3...你真的要支持 2003 年发布的操作系统吗?
  • @MichaelDautermann 人们在各种疯狂的配置上测试 Perl。 Here's someone 最早测试 OS X 10.4。

标签: macos perl compilation


【解决方案1】:

这应该是hints/darwin.sh 中的一个相当简单的更改,它检查正在运行的 OSX 版本并相应地设置 MACOSX_DEPLOYMENT_TARGET

Perl 是一个开源项目,因此开发人员的时间总是很短。如果您为此制作补丁并将其提交给 p5p,我相信将不胜感激。

【讨论】:

  • 谢谢,我在bug report 中鼓励了该解决方案。
【解决方案2】:

接受@Calle-Dybedahl 的回答,因为它在技术上是正确的。 Perl 5 Core Hacker Jarkko Hietaniemi 推送了this solution,事实证明这比您乍一看可能想象的要复杂一些。他得出的基本配方是:

对于 OS X 10.6 或更高版本,不要再使用MACOSX_DEPLOYMENT_TARGET, 没有工具链应该可以正常工作。到现在为止的部署目标 硬连线到 10.3。这个逻辑来自 RT#117433.

对于从 10.3 到 10.5 的 OS X 版本,没有变化,仍在使用 MACOSX_DEPLOYMENT_TARGET=10.3 用于链接。

对于 10.3 之前的 OS X 版本,没有变化,仍然没有使用 MACOSX_DEPLOYMENT_TARGET=10.3

新:始终将 -mmacosx-version-min 添加到 ccflagsldflags from 环境变量$MACOSX_DEPLOYMENT_TARGET,如果已设置。如果没有设置 var, 从 sw_vers(1) 设置 OS X 版本的最小值。设置变量 对于早期构建和打包 Perl 的人来说应该很方便 OS X 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2016-11-23
    • 2017-04-28
    • 1970-01-01
    • 2013-01-08
    • 2023-03-25
    • 2015-07-31
    相关资源
    最近更新 更多