2010-10-27 118 views
1

我想編譯一些使用Google的sparsehash包含文件的東西。如何打開STL向後兼容性?

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

我知道hash_fun.h在/usr/include/c++/4.3/backward/hash_fun.h存在。 我只是不確定如何讓谷歌稀疏哈希使用它。任何想法?我真的很想避免篡改google文件或/ usr/include文件。我已經使用-Wno-deprecated去除關於使用舊的STL包含文件的錯誤,但我很確定有一種方法可以在使用更新版本的STL時識別#include。

回答

1

當你編譯sparsehash時,你是用現在使用的編譯器編譯它的嗎?當我構建它時,它會在tr1/functional中找到hash_fun,而不是ext/hash_fun.h

m4/stl_hash_fun.m4中,您可以看到它搜索的地點列表。

+0

sparsehash是一個模板庫,我從不需要從當前代碼單獨編譯它,所以我使用相同的編譯器同時使用sparsehash和我現在使用的。 – stler 2010-10-27 04:08:36

+2

當我從[這裏](http://code.google.com/p/google-sparsehash)下載sparsehash時,下載的內容包含一個配置腳本,用於確定hash_fun的#include應該在哪裏。你可能會看看sparsehash中是否有config.h,並查看HASH_FUN_H的設置。 – 2010-10-27 04:14:45

+0

你是對的。謝謝。 – stler 2010-10-27 04:26:41