2013-03-02 3 views
0

Я использую boost (который использует time.h) и библиотеку C (libav), которая имеет заголовочный файл, который также называется time.h. Поэтому, когда boost пытается использовать time.h, он вызывает time.h из libav, так как он имеет стандартное время ANSI C.CMake конфликтующие файлы заголовков

Как заставить libav найти собственное время.h и увеличить использование стандартного времени ANSI C.h? И я не хочу вообще изменять библиотеки, поскольку этот код нужно строить повсюду.

Спасибо!

+1

Чтобы помочь нам увидеть код, через который вы их включаете. В противном случае мы можем только догадываться. – antonijn

ответ

3

time.h из libav не должны вступать в противоречие с time.h из/USR/включать, как он включен в источниках libav как:

#include "libavutil/time.h" 

По крайней мере, он включил этот путь в последней версии libav из хранилища мерзавца , Если у вас установлена ​​более старая версия, это не значит, что вы, вероятно, должны обновиться. Если вы установили каталог libavutil в путь включения по ошибке, вы должны удалить его (или изменить путь, который не включает сам dir libavutil).

+0

Только в том, что «система включает» должна использовать '<...>' – vonbrand

+0

, которые включают в себя утверждения с "" из источников libav, а не мое предложение – Slava

+0

Они ссылаются на свои собственные заголовки, предположительно. он алгоритм состоит в том, что '' ... "' начинает поиск файла в том же каталоге, где исходный код перед просмотром системы включает каталоги, а '<...>' только смотрит на каталоги системы. – vonbrand

Смежные вопросы