2009-04-01 4 views

Répondre

5

VC: Par dossier de projet, puis par ordre alphabétique.
GCC: selon le fichier make pour

Pourquoi est-ce important ?, l'ordre d'achèvement ne compteur et n'a pas d'effet le résultat de la construction finale.

+0

Il est important de comprendre pourquoi le code objet doit être lié par la suite. – zgulser

+0

Il est important que certains fichiers source contiennent la directive # import et que d'autres incluent un fichier d'en-tête qui devrait être généré par cette directive. – 23W

5

Généralement, cela n'est spécifié nulle part. Surtout lors de l'utilisation par exemple. make parallèle, l'ordre de compilation est à peu près arbitraire.

2

Avec make:

  • Les cibles sont traitées dans l'ordre où ils apparaissent
  • Un arbre de dépendance est construit pour chaque cible et je suppose que l'arbre est en profondeur d'abord traversé l'évaluation post-ordre (semble être la seule façon dont il fonctionne, mais je ne trouve rien qui indique ceci dans la documentation)

Comme jpalecek suggests, en même temps builds peut être plus compliqué.


Quelques citations de GNU make docs:

Les règles double du côlon pour une cible sont exécutées dans l'ordre où ils apparaissent dans le makefile.

...

Si vous spécifiez plusieurs objectifs, rendre les processus chacun d'eux à son tour, dans l'ordre que vous les nommer.

9

L'ordre de compilation n'est pas spécifié par la norme C.

Comme il n'y a pas besoin pour la construction d'objets globaux comme en C++, il n'y a pas de situation où l'ordre de compilation est pertinente en C.

1

S'il importe alors vous avez vraiment besoin de définir des dépendances dans votre makefile pour s'assurer que certains sont construits avant les autres. Vraiment, vous devriez d'abord vous demander pourquoi c'est important.

Questions connexes