web-dev-qa-db-fra.com

Quelle est la différence entre MACOSX_DEPLOYMENT_TARGET et -mmacosx-version-min?

J'ai souvent besoin de cibler des versions de Mac OS X plus anciennes que celle que j'utilise actuellement. Comme je préfère travailler avec un shell bash et des Makefiles, je n'utilise pas Xcode. Apple prend explicitement en charge le ciblage des anciennes versions d'OS X , mais j'ai toujours été troublé par la redondance des deux étapes de configuration qui sont généralement prises pour cibler les anciennes plates-formes:

  1. gcc démarre avec --macosx-version-min:

    gcc --mmacosx-version-min=10.6 ....
    
  2. Le MACOSX_DEPLOYMENT_TARGET la variable d'environnement est définie sur la plate-forme souhaitée, par exemple.

    export MACOSX_DEPLOYMENT_TARGET=10.6
    

Lorsque vous essayez de comprendre la différence réelle entre les deux en recherchant, vous obtiendrez des réponses différentes. Certaines personnes disent qu'elles font exactement la même chose, il est donc seulement nécessaire d'utiliser l'une des deux. Cependant, il y a aussi voix qui disent qu'il faut faire les deux: démarrer gcc avec --macosx-version-min et définissez la variable d'environnement.

Ces deux choses sont-elles exactement les mêmes? Faut-il seulement utiliser l'un des deux mais pas les deux? Y a-t-il de la documentation officielle disponible quelque part? Apple mentionne MACOSX_DEPLOYMENT_TARGET mais ne mentionne pas --macosx-version-min du tout, même si cela semble beaucoup plus courant.

31
Andreas

Les pages de manuel de gcc sur Mac OS X disent qu'elles sont synonymes:

-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.
32
Andreas