# 15.2. Dépendances des Systèmes d'Exploitation

Comme les projets KDevelop utilisent les outils GNU pour créer les projets, vous êtes sûr que votre application fonctionnera sur presque tous les systèmes Unix. Cependant, vous pouvez rencontrer des problèmes lors de la compilation de votre application sur un autre Unix parce que les fichiers d'en-tête sont situés à des endroits différents ou bien que vous avez besoin d'une autre implantation, spécialement lorsque vous utilisez des fonctions de bas niveau de l'OS qui peuvent être différentes d'un système à l'autre.

En programmant avec C++ et Qt/KDE, vous avez du remarquer que les classes de Qt contiennent un grand ensemble de fonctionnalités qui sont déjà indépendantes du compilateur et de l'OS et rendent les choses plus simples, des chaînes de caractères (QString) à la lecture/écriture de fichiers (QFile) ; en utilisant Qt, vous rendez donc obsolètes la plupart des spécificités des systèmes d'exploitation.

Néanmoins, si vous utilisez Qt et que vous avez besoin d'utiliser des &#;defines pour votre application, vous devriez inclure `qglobal.h` et utiliser les &#;defines qui y sont déjà prédéfinis pour différents systèmes d'exploitation et compilateurs, comme ci-dessous.

Au lieu de laisser les distributeurs d'OS appliquer des correctifs à votre application (comme beaucoup le font pour construire des paquetages rpm ou autre), vous devriez utiliser des defines pour les sections qui sont spécifiques au système d'exploitation (mais vous n'avez pas besoin d'utiliser l'option -D à la compilation, les définitions de systèmes d'exploitation sont automatiquement prises en compte). La liste ci-dessous définit les systèmes disponibles et leurs définitions (les defines supplémentaires sont entre parenthèses) :

AIX :

  &#;ifdef &_;AIX

BSDI Unix :

  &#;if defined(bsdi) &|;&|; defined(&_;&_;bsdi&_;&_;)

Dec Ultrix :

  &#;if defined (ultrix) &|;&|; defined(&_;&_;ultrix) &|;&|; defined(&_;&_;ultrix&_;&_;)

DG Unix :

  &#;if defined(DGUX)

FreeBSD :

  &#;ifdef &_;&_;FreeBSD&_;&_;

GNU Hurd :

  &#;if defined(&_;&_;GNU&_;&_;)

HP-UX :

  &#;if defined (hpux) &|;&|; defined (&_;&_;hpux) &|;&|; defined (&_;&_;hpux&_;&_;)

Linux :

  &#;if defined(linux) &|;&|; defined(&_;&_;linux) &|;&|; defined(&_;&_;linux&_;&_;)

NetBSD :

  &#;ifdef &_;&_;NetBSD&_;&_;

OpenBSD :

  &#;ifdef &_;&_;OpenBSD&_;&_;

OSF Unix :

  &#;if defined(&_;&_;osf&_;&_;)

QNX :

  &#;if defined(&_;&_;QNX&_;&_;)

SCO UnixWare :

  &#;if defined(&_;UNIXWARE)

SCO UnixWare 7 :

  &#;if defined(sco) &|;&|; defined(&_;UNIXWARE7)

SCO :

  &#;if defined(&_;SCO&_;DS) &|;&|; defined(M&_;UNIX) &|;&|; defined(M&_;XENIX)

SGI Irix :

  &#;if defined(sgi) &|;&|; defined(&_;&_;sgi)

SunOS :

  &#;if defined (sun) &|;&|; defined (&_;&_;sun) &|;&|; defined (&_;&_;sun&_;&_;)

Sun Solaris :

  &#;if defined (&_;OS&_;SUN&_;) &|;&|; defined (&_;&_;SVR4)