2013-03-02 68 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