2010-10-27 13 views
1

J'essaie de compiler quelque chose qui utilise les fichiers d'inclusion de sparsehash de Google.Comment activer la compatibilité descendante STL?

libs/include/google/dense_hash_map:93:60: error: ext/hash_fun.h: No such file or directory 
^Cmake: *** [all] Interrupt 

Je sais que hash_fun.h existe dans /usr/include/c++/4.3/backward/hash_fun.h. Je ne suis pas sûr de savoir comment faire google sparse hash l'utiliser. Une idée? Je voudrais vraiment éviter de falsifier les fichiers google ou les fichiers/usr/include. Je devais déjà utiliser -Wno-deprecated pour supprimer une erreur sur l'utilisation d'un ancien fichier d'inclusion STL, mais je suis à peu près sûr qu'il existe un moyen de reconnaître #include lors de l'utilisation de nouvelles versions de STL.

Répondre

1

Lorsque vous avez compilé sparsehash, l'avez-vous compilé avec le même compilateur que vous utilisez maintenant? Quand je le construis, il trouve hash_fun dans tr1/functional, pas dans ext/hash_fun.h. En m4/stl_hash_fun.m4, vous pouvez voir la liste des endroits qu'il recherche.

+0

sparsehash est une bibliothèque de modèles, je n'ai jamais eu besoin de la compiler séparément du code actuel, donc j'utilise le même compilateur pour sparsehash et ce que j'utilise maintenant. – stler

+2

Lorsque j'ai téléchargé sparsehash depuis [ici] (http://code.google.com/p/google-sparsehash), le téléchargement incluait un script de configuration qui permettait de déterminer où #include pour hash_fun devrait être. Vous pouvez regarder s'il y a un fichier config.h dans sparsehash et regarder à quoi HASH_FUN_H est défini. –

+0

Vous avez absolument raison. Merci. – stler