RE: question about the -I option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Dan. Tim, John,

Thanks for your detailed response. It worked for me !

John, your response was the most helpful..I shall take
into account your insightful suggestions regarding
structuring of projects, I'm sure it would prove to be
very helpful.

Thanks again,
Iyer

> 
> "John (Eljay) Love-Jensen" <eljay@xxxxxxxxx> wrote:
> Hi iyer,
> 
> Try this:
> gcc -c -v -isystem $PWD/include hello.c 
> 
> I strongly recommend that you do not use #include <>
> (with angle brackets), and instead use #include ""
> (with quotes).
> 
> The #include <> is used for system header files,
> such as , or . Your project, whether the project
> headers themselves or headers as part of an SDK that
> you are making, should use #include "", since you
> are (probably) not making system headers. [See
> Note#1 below]
> 
> #define SOAPBOX
> 
> Also, as a matter of style (and as such, there is no
> compunction for you to use this convention... just a
> suggestion after having worked with C/C++ for 20
> years on large projects), I recommend you use this
> directory & file layout for your project (let's
> assume your project is called DancingBear):
> 
> somewhere/DancingBear/
> somewhere/DancingBear/Makefile
> somewhere/DancingBear/hello.h
> somewhere/DancingBear/src/hello.c
> somewhere/DancingBear/src/retro.h
> somewhere/DancingBear/hello.h
> 
> In your hello.c file, use #include
> "DancingBear/hello.h" for the header, and use
> #include "retro.h" for the header in the src
> directory.
> 
> The "somewhere" directory represents the root level
> directory that you're project(s) live. It may be
> that 100 projects all live at different root level
> "somewhere" directories, or it may be that the
> projects are all peers to one another.
> 
> The "DancingBear" directory represents your
> DancingBear SDK or application or what have you.
> It's where your PUBLIC header files reside.
> 
> The "Makefile" performs a build, and I suggest that
> it follows the common Makefile conventions. And that
> by default builds hello.c into
> "${BUILDROOT}/DancingBear/obj/hello.o", where
> ${BUILDROOT} defaults to "somewhere" if not
> specified, but can be overridden. That way you can
> have your source on a read only volume, and have the
> build deliverable (e.g., the executable or shared
> library or archive library) and intermediary
> byproduct files (such as object files) be created on
> the ${BUILDROOT} location.
> 
> Info on Makefile conventions:
>
http://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
> 
> The "src" directory is where your PRIVATE source
> code and PRIVATE headers reside. Such as hello.c and
> retro.h (a private header file).
> 
> If you had platform specific files, they'd go in a
> subdirectory from src.  For example:
> 
> somewhere/DancingBear/src/i386/fastblit.c
> somewhere/DancingBear/src/PPC/fastblit.c
> somewhere/DancingBear/src/SPARC/fastblit.c
> 
> Although for searching and editing sanity, I
> recommend prefixing (or suffixing) the platform
> specific source files with the particular platform
> as well:
> 
> somewhere/DancingBear/src/i386/i386fastblit.c
> somewhere/DancingBear/src/PPC/PPCfastblit.c
> somewhere/DancingBear/src/SPARC/SPARCfastblit.c
> 
> Another example, showing that "platform" can mean
> different things:
> 
> somewhere/DancingBear/src/X11/X11Gui.c
> somewhere/DancingBear/src/Carbon/CarbonGui.c
> somewhere/DancingBear/src/GDIPlus/GDIPlusGui.c
> 
> Consumers of your DancingBear project (if it is an
> SDK) would specify the DancingBear public headers
> like #include "DancingBear/hello.h".
> 
> #undef SOAPBOX
> 
> HTH,
> --Eljay
> 
> Note#1 - there are many SDKs that consider their own
> headers to be system header files. That presumption
> in many cases is debatable. For example, should
> NCurses (which I find awesomely cool) be pulled in
> via #include ?
> 
> 
>  
> ---------------------------------
> Access over 1 million songs - Yahoo! Music
Unlimited.



 
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux