2013-03-02 226 views
0

我使用boost(它使用time.h)和一個C庫(libav),它有一個頭文件也稱爲time.h.所以當boost嘗試使用time.h時,它將libav中的time.h作爲ANSI C標準time.h的參數。CMake衝突的頭文件

我該如何強制libav找到它自己的time.h並且提高使用ANSI C標準time.h?我不想修改這些庫,因爲這些代碼需要隨處構建。

謝謝!

#include "libavutil/time.h" 

它至少包括這樣從Git倉庫中最新版本libav的:從libav

+1

爲了幫助我們必須看到包含它們的代碼。否則,我們只能猜測。 – antonijn 2013-03-02 20:37:16

回答

3

time.h中不應該與time.h中的/ usr/include目錄,因爲它包含在libav源衝突。如果你有舊版本,那不是那麼做,你應該升級。如果您錯誤地在include路徑中設置libavutil目錄,則應刪除該路徑(或更改爲不包含dir libavutil本身的路徑)。

+0

只有「system includes」應該使用'<...>' – vonbrand 2013-03-02 22:46:43

+0

包含帶「」的語句來自libav來源,而不是我的建議 – Slava 2013-03-02 22:48:20

+0

他們正在引用它們自己的頭文件,據推測。他的算法是''...''開始在查看系統包含目錄之前在源文件所在的同一目錄中查找文件,而'<...>'只查看系統包含目錄。 – vonbrand 2013-03-02 22:57:13