2014-02-19 26 views
1

我需要編譯器包含包括這樣的源代碼:如何告訴GCC映射包含目錄?

#include <tr1/unordered_map> 

但是我的編譯器(基於GCC 4.6)不具有tr1目錄。我需要以某種方式告訴編譯器在不修改文件系統的源代碼的情況下將<tr1/unordered_map>映射到<unordered_map

+0

那麼指定include目錄然後執行''unordered_map「'? – 2014-02-19 09:41:25

+0

像[這](http://coliru.stacked-crooked.com/a/aefe8886f49c8446) – 2014-02-19 09:47:23

回答

0

有點哈克:轉至包含unordered_map和包括目錄:

ln -s . tr1 
+0

看起來這是這裏唯一的選擇。可悲的是,我認爲有一個更好的解決方案。 – Kentzo

1

當你建立你的代碼時,提供include目錄作爲參數。

-I。 - 將當前目錄作爲包含目錄使用

-I tr1 - tr1作爲包含目錄。

-I/yourpath/ - 把任何一個目錄包括目錄

+0

據我瞭解,編譯器會尋找名稱「tr1/unordered_map」。因此,儘管添加了包含列表的目錄,它必須包含頭文件爲「unordered_map」的子目錄「tr1」。不幸的是,這是個問題,任何地方都沒有「tr1」目錄。我想告訴編譯器忽略「tr1」,只在所有包含目錄中查找頭本身。 – Kentzo

+0

但是這應該是工作的,因爲你所包含的內容也將從所有包含目錄中搜索。不是嗎? –

+0

是的,但它會搜索「tr1/unordered_map.h」,而不是「unordered_map.h」。由於沒有「tr1」,它不會找到它。或者我的假設是錯誤的? – Kentzo

0

gcc的頭<unordered_map><tr1/unordered_map>是不同的。一個需要打開C++ 11支持,另一個則不需要。用一個代替另一個可能工作也可能不工作。

可能最簡單的解決方案就是使用Boost的tr1實現。

相關問題