2008-10-03 6 views
0

Pour le compilateur XLC, le code basé sur un modèle va dans un fichier * .c. Ensuite, lorsque votre programme est compilé en utilisant les fonctions du modèle, le compilateur trouve les définitions de modèle dans le fichier .c et les instancie.Comment inclure les fichiers * .c IBM XLC dans le fichier de dépendance make?

Le problème est que ces fichiers .c ne sont pas inclus par défaut lors d'un xlC -qmakedepend pour générer les dépendances de construction. Donc, si vous changez l'un de ces fichiers .c, vous ne construisez pas automatiquement tout ce qui en dépend.

Est-ce que quelqu'un a trouvé une bonne solution à ce problème?

+0

(Supprimé ma réponse - J'ai mal compris d'où provenaient les fichiers .c de JohnMcG) –

Répondre

1

En résumé, la solution consiste à migrer en utilisant l'utilitaire tempinc de XLC. L'utilitaire tempinc vous oblige à configurer vos fichiers avec les déclarations de modèle dans votre fichier d'en-tête (.h ou .hpp) et vos implémentations dans un fichier .c (cette extension est obligatoire). Au fur et à mesure que le compilateur trouve des instanciations de gabarit, il installe des instanciations explicites dans un autre fichier source dans votre répertoire tempinc, forçant le code à être généré pour eux. Le compilateur sait trouver les définitions de modèles décodées dans foo.h dans foo.c.

Le problème que j'ai spécifié est que les constructeurs de dépendances ne le savent pas, et ne peuvent donc pas inclure vos fichiers .c dans les dépendances.

Avec la version 6.0 IBM recommends using a the -qtemplateregistry setting plutôt que -qtempinc. Ensuite, vous pouvez utiliser un modèle type pour inclure les définitions de modèles dans votre fichier d'en-tête, qui seront ensuite visibles dans le finder de dépendances, ou les placer dans un fichier séparé que vous #incluez de votre fichier d'en-tête. trouvé en utilisant le finder de dépendance.

Si vous migrez d'utiliser -qtempinc, vous pouvez conditionnellement #inclure votre fichier de mise en œuvre du modèle de votre fichier de déclaration avec le code comme ci-dessous:

// end of foo.h 
#ifndef __TEMPINC__   
#include "foo.c"  
#endif  

Ainsi votre code va construire et lien si jamais vous décidez de revenir à l'utilisation du paramètre -qtempic.

Questions connexes