我经常需要定位比我目前正在运行的版本更旧的Mac OS X版本。由于我更喜欢使用bash shell和Makefile,我不使用Xcode。 Apple explicitly supports targeting older OS X versions,但我一直对通常用于定位旧平台的两个配置步骤的冗余感到困惑:
使用--macosx-version-min
:
gcc --mmacosx-version-min=10.6 ....
MACOSX_DEPLOYMENT_TARGET
环境变量设置为所需的平台,例如
export MACOSX_DEPLOYMENT_TARGET=10.6
当试图通过搜索找出两者之间的实际差异时,你会得出不同的答案。 Some people说他们完全一样,所以只需要使用其中一个。但是,还有voices表示必须同时执行这两项操作:使用--macosx-version-min
启动gcc并设置环境变量。
这两件事情完全相同吗?是否只需要使用其中一个而不是两个?某处有官方文件吗? Apple mentions MACOSX_DEPLOYMENT_TARGET
但根本没有提到--macosx-version-min
,即使它似乎更常见。
答案 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
可能有一天会停止工作。