Un signe est que cette cible n'existe pas, comprenez cela. Un autre est en comparant l'horodatage de modification de la cible et des prérequis. Comment ça marche dans plus de détails? Quelle est la logique de la comparaison des horodatages cible et prérequis et de son fonctionnement lorsqu'il existe plusieurs conditions préalables?Comment faire décider de construire la cible
Répondre
make
premier obtient le temps de modification de la cible, puis compare cette valeur à l'heure de modification de chaque préreq, dans l'ordre de gauche à droite, s'arrêtant dès qu'il trouve un prérequis plus récent que la cible (puisqu'une seule préreq récente est suffisante pour exiger que la cible soit reconstruite).
Par exemple, supposons que vous avez une règle comme ceci:
foo: bar baz boo
En outre, supposons que les temps de modification de ces fichiers sont les suivants:
foo: 4
bar: 3
baz: 6
boo: 2
Dans ce cas, make
comparera l'heure de modification de foo
(4) à l'heure de modification de bar
(3); puisque bar
est plus âgé, make
va se déplacer et compare l'heure de modification de foo
(4) à l'heure de modification de baz
(6). Puisque baz
est plus récent, make
décidera que foo
doit être reconstruit, et arrêtera de vérifier les conditions de foo
(donc boo
ne sera jamais vérifié).
Si vous avez plusieurs lignes de dépendance pour la cible de sortie, comme dans:
foo: bar baz
foo: boo
Les prereqs dans les lignes de dépendance deuxième et les suivantes sont tout simplement ajouté à la fin de la liste des prereqs pour la cible de sortie - - c'est-à-dire que cet exemple est exactement équivalent au premier exemple ci-dessus. En général, toutes les variantes make
se comportent de cette manière, bien que certaines variantes aient des extensions qui modifient ce comportement (par exemple, GNU make inclut des prérequis pour la commande, Sun make a des caractéristiques de "keep state", etc).
Unix make a des règles d'inférence assez compliquées pour déterminer si la cible doit être reconstruite. Pour GNU, vous pouvez les sauvegarder en exécutant 'make -p' dans un répertoire qui n'a pas de Makefile.
De plus, les règles pourraient être enchaînées, plus d'explications à ce sujet est here
Unix standard faire et le travail Microsoft nmake de la même façon
- 1. Eclipse IDE construire la question cible
- 2. CMake et CTest: Comment faire la cible « nuit » construire en fait les essais
- 3. StyleCop MS Construire la magie? Qui appelle la cible StyleCop?
- 4. Pathfinding/Décider de la direction
- 5. Dans Scons, comment puis-je injecter une cible à construire?
- 6. variable scope - comment décider
- 7. Aide Makefile: Aucune règle pour faire la cible
- 8. Est-il possible de faire référence aux métadonnées de la cible à partir de l'implémentation cible dans MSBuild?
- 9. Différences entre construire et faire?
- 10. Comment obtenir la cible invocatrice de makefile?
- 11. Comment construire la requête
- 12. Comment décider quand implémenter une DLL?
- 13. MVC décider d'une vue
- 14. Comment décider quand utiliser XSD ou DTD?
- 15. comment décider sur quelle licence utiliser?
- 16. Décider de taper dans le runtime et l'appliquer en type générique - comment puis-je faire cela?
- 17. Comment faire pour pointer le html cible lors de la transformation xml?
- 18. Comment décider d'utiliser les transactions de base de données
- 19. Comment construire à partir de la source?
- 20. Comment faire pour échouer construire TFS basé sur l'avertissement FXCop
- 21. Comment faire du développement et construire en Visual Basic 6.0
- 22. Taille de la cible UIButton
- 23. make - spécification du nom de la cible à faire à partir de la ligne de commande
- 24. Laisser un objet décider de sa classe
- 25. Comment faire pour exécuter l'application iphone/ipad dans le simulateur d'ipad en sélectionnant la famille de périphérique cible = iphone/ipad?
- 26. Définition de la JVM cible dans SBT
- 27. application vnc pour iPhone. Comment faire pour en construire un?
- 28. jQuery JS: L'utilisation de deux Transmet le formulaire et décider quoi faire
- 29. Comment faire propre et construire dans Eclipse en utilisant Ant
- 30. C# Comment afficher la cible de la plate-forme