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.
(Supprimé ma réponse - J'ai mal compris d'où provenaient les fichiers .c de JohnMcG) –