[FFmpeg-devel] [RFC] full paths in #include directives

Diego Biurrun diego
Thu May 8 23:23:48 CEST 2008


On Thu, May 08, 2008 at 08:59:51PM +0200, Michael Niedermayer wrote:
> On Thu, May 08, 2008 at 03:52:20PM +0200, Aurelien Jacobs wrote:
> > Diego Biurrun wrote:
> > 
> > > I would like to propose using full paths in all #include directives in
> > > FFmpeg, i.e.
> > > 
> > > #include "libavutil/common.h"
> > > 
> > > instead of
> > > 
> > > #include "common.h"
> > > 
> > > The reasons are manyfold:
> > > 
> > > 0) We already expect this from external users.
> > > 
> > > 1) Many header names are not at all unique.  The above-mentioned
> > > common.h comes to mind, as do others.  Depending on the order of -I
> > > flags the right header may or may not be included.
> > > 
> > > This has bitten me several times in MPlayer already.  We now use full
> > > paths for FFmpeg #includes in MPlayer, but still -I flags are needed
> > > so that the FFmpeg headers themselves can find their dependencies.
> > > But with -Ilibavcodec on the gcc command line '#include <png.h>'
> > > picks up the FFmpeg version instead of the libpng header.  Build
> > > system kludges can work around this, but the system remains brittle,
> > > future FFmpeg changes may necessitate more or updated kludges.
> > > 
> > > 2) The need for -I flags would be reduced internally as well as
> > > externally.
> > > 
> > I like this proposal, but I would prefer if headers in the same
> > directory don't use full path.
> 
> seconded

But this only solves half of the problem.  Things like

#include "png.h"
#include "common.h"

can still pick up the wrong headers with an unfortunate combination of
-I flags...

Diego




More information about the ffmpeg-devel mailing list