MACOSX_DEPLOYMENT_TARGET和-mmacosx-version-min有什么区别?

时间:2014-08-17 18:35:26

标签: macos gcc backwards-compatibility

我经常需要定位比我目前正在运行的版本更旧的Mac OS X版本。由于我更喜欢​​使用bash shell和Makefile,我不使用Xcode。 Apple explicitly supports targeting older OS X versions,但我一直对通常用于定位旧平台的两个配置步骤的冗余感到困惑:

  1. 使用--macosx-version-min

    启动gcc
    gcc --mmacosx-version-min=10.6 ....
    
  2. MACOSX_DEPLOYMENT_TARGET环境变量设置为所需的平台,例如

    export MACOSX_DEPLOYMENT_TARGET=10.6
    
  3. 当试图通过搜索找出两者之间的实际差异时,你会得出不同的答案。 Some people说他们完全一样,所以只需要使用其中一个。但是,还有voices表示必须同时执行这两项操作:使用--macosx-version-min 启动gcc并设置环境变量。

    这两件事情完全相同吗?是否只需要使用其中一个而不是两个?某处有官方文件吗? Apple mentions MACOSX_DEPLOYMENT_TARGET但根本没有提到--macosx-version-min,即使它似乎更常见。

2 个答案:

答案 0 :(得分:29)

Mac OS X上的gcc手册页说他们是同义词:

  
-mmacosx-version-min=version
The earliest version of MacOS X that this executable will run on is
version.  Typical values of version include 10.1, 10.2, and 10.3.9.

This value can also be set with the MACOSX_DEPLOYMENT_TARGET environment
variable.  If both the command-line option is specified and the
environment variable is set, the command-line option will take precedence.

答案 1 :(得分:0)

请记住,苹果将默认编译器更改为clang。目前clang尝试将gcc标志转换为自己的标志。但这并不涵盖100%。因此,--mmacosx-version-min可能有一天会停止工作。