Est-ce qu'il y a de telles macro constantes *officielles* à utiliser lorsqu'on fait un portage d'un soft unix vers macosX ?
__APPLE__ est définie lorsque l'on compile avec un compilateur Apple : en gros, quand on compile avec le gcc livré avec Xcode (et sûrement Darwin aussi). Je ne pense pas qu'il y ait d'autre compilateur dans lequels cette constante est définie.
Et ça fonctionne parfaitement
__MACH__ est définie lorsque le système est basé sur un noyau Mach. Celà signifie que les API Mach sont disponibles. Ce n'est sûrement pas uniquement utilisé par apple, vu qu'il existe d'autre systèmes basés sur ce noyau (dont MachOS, GNU/Hurd).
Personnellement, je conseillerais __APPLE__ pour être entièrement automatisé.
Moi aussi (voir + bas)
Par contre, si on peut se le permettre, il ne faut pas
hésiter à créer ses propres constantes du genre MACOS, LINUX définies dans la ligne de commande du compilateur (-DMACOS=1 -DLINUX=0).
Ça dépend du contexte et de la taille de l'appli : pour une appli de taille respectable et dont la compilation est assez compliquée, comme OpenOffice.org, la variable MACOSX est déjà utilisée par les outils pour la compilation, et pour des choses qui sont différentes.
Exemple : le suffixe des bibliothèques est .dylib au lieu d'être .so -> $MACOSX renseigne sur ce point. On pourrait aussi utiliser cette variable dans un autre contexte, mais cela manque de précision, et pourrait générer des problèmes difficiles à identifier.
Le fait d'utiliser __APPLE__ est d'autant plus important que c'est cette variable qui, lorsqu'elle est définie, qui permet d'obtenir l'environnement ( avec environ = *_NSGetEnviron() ; par exemple )
Conclusion :
+1 en ce qui me concerne pour
#ifdef __APPLE__ .... #endif
Mes 2 centimes...
-- eric bachard French OpenOffice.org Community contributor (build of french releases for Linux PPC and Mac OS X / X11) See : <http://fr.openoffice.org>
Est-ce qu'il y a de telles macro constantes *officielles*
à utiliser lorsqu'on fait un portage d'un soft unix
vers macosX ?
__APPLE__ est définie lorsque l'on compile avec un compilateur Apple :
en gros, quand on compile avec le gcc livré avec Xcode (et sûrement
Darwin aussi). Je ne pense pas qu'il y ait d'autre compilateur dans
lequels cette constante est définie.
Et ça fonctionne parfaitement
__MACH__ est définie lorsque le système est basé sur un noyau Mach. Celà
signifie que les API Mach sont disponibles. Ce n'est sûrement pas
uniquement utilisé par apple, vu qu'il existe d'autre systèmes basés sur
ce noyau (dont MachOS, GNU/Hurd).
Personnellement, je conseillerais __APPLE__ pour être entièrement
automatisé.
Moi aussi (voir + bas)
Par contre, si on peut se le permettre, il ne faut pas
hésiter à créer ses propres constantes du genre MACOS, LINUX définies
dans la ligne de commande du compilateur (-DMACOS=1 -DLINUX=0).
Ça dépend du contexte et de la taille de l'appli : pour une appli de
taille respectable et dont la compilation est assez compliquée, comme
OpenOffice.org, la variable MACOSX est déjà utilisée par les outils pour
la compilation, et pour des choses qui sont différentes.
Exemple : le suffixe des bibliothèques est .dylib au lieu d'être .so ->
$MACOSX renseigne sur ce point.
On pourrait aussi utiliser cette variable dans un autre contexte, mais
cela manque de précision, et pourrait générer des problèmes difficiles à
identifier.
Le fait d'utiliser __APPLE__ est d'autant plus important que c'est cette
variable qui, lorsqu'elle est définie, qui permet d'obtenir
l'environnement ( avec environ = *_NSGetEnviron() ; par exemple )
Conclusion :
+1 en ce qui me concerne pour
#ifdef __APPLE__
....
#endif
Mes 2 centimes...
--
eric bachard <ericb@openoffice.org>
French OpenOffice.org Community contributor (build of french releases
for Linux PPC and Mac OS X / X11)
See : <http://fr.openoffice.org>
Est-ce qu'il y a de telles macro constantes *officielles* à utiliser lorsqu'on fait un portage d'un soft unix vers macosX ?
__APPLE__ est définie lorsque l'on compile avec un compilateur Apple : en gros, quand on compile avec le gcc livré avec Xcode (et sûrement Darwin aussi). Je ne pense pas qu'il y ait d'autre compilateur dans lequels cette constante est définie.
Et ça fonctionne parfaitement
__MACH__ est définie lorsque le système est basé sur un noyau Mach. Celà signifie que les API Mach sont disponibles. Ce n'est sûrement pas uniquement utilisé par apple, vu qu'il existe d'autre systèmes basés sur ce noyau (dont MachOS, GNU/Hurd).
Personnellement, je conseillerais __APPLE__ pour être entièrement automatisé.
Moi aussi (voir + bas)
Par contre, si on peut se le permettre, il ne faut pas
hésiter à créer ses propres constantes du genre MACOS, LINUX définies dans la ligne de commande du compilateur (-DMACOS=1 -DLINUX=0).
Ça dépend du contexte et de la taille de l'appli : pour une appli de taille respectable et dont la compilation est assez compliquée, comme OpenOffice.org, la variable MACOSX est déjà utilisée par les outils pour la compilation, et pour des choses qui sont différentes.
Exemple : le suffixe des bibliothèques est .dylib au lieu d'être .so -> $MACOSX renseigne sur ce point. On pourrait aussi utiliser cette variable dans un autre contexte, mais cela manque de précision, et pourrait générer des problèmes difficiles à identifier.
Le fait d'utiliser __APPLE__ est d'autant plus important que c'est cette variable qui, lorsqu'elle est définie, qui permet d'obtenir l'environnement ( avec environ = *_NSGetEnviron() ; par exemple )
Conclusion :
+1 en ce qui me concerne pour
#ifdef __APPLE__ .... #endif
Mes 2 centimes...
-- eric bachard French OpenOffice.org Community contributor (build of french releases for Linux PPC and Mac OS X / X11) See : <http://fr.openoffice.org>