• Advertisement
Sign in to follow this  

ling obj+obj to obj and 'where headers'

This topic is 1402 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I got 2 practical questions (reffering to gcc/mingw)

 

I got a set of many obj (.o) files can I link them into other biger obj

file? (as an intermediate step later I will be linking this bigger obj's into exe)

 

I got some header "all_headers.h" file containing references (includes) from all my header files (i know its bad name but I cannot find some better)

 

If I want to add it to my files I could use relative like

 

#include "..\all_headers.h"

or 

#include "c:\code\all_headers.h"

 

but both are somewhat wrong 

could I just include

 

#include "all_headers.h"

or

#include <all_headers.h>

 

and make precompiler to find it? (but i dont wont to copy this all_headers.h

out of my source folder to increase dependency confusion just to inform

compiler where ha can search for it ?)

 

tnx

 
 

 

 

 

 

Share this post


Link to post
Share on other sites
Advertisement

I got a set of many obj (.o) files can I link them into other biger obj
file? (as an intermediate step later I will be linking this bigger obj's into exe)

Yes, at least with a link format like ELF, but it's generally not done. Usually if you want to group compiled .o files into a single "bundle" you use a static library. Everything is set up to support that, and it works with all link formats.

I got some header "all_headers.h" file containing references (includes) from all my header files (i know its bad name but I cannot find some better)
 
If I want to add it to my files I could use relative like
 
#include "..\all_headers.h"
or 
#include "c:\code\all_headers.h"
 
but both are somewhat wrong

It's wrong on 2 levels: (1) it's wrong because '\a' and '\c' are not valid characters to include in pathnames, and (2) using relative paths is bad practice becuase it makes work when you refactor your project, and it's not necessary. Certainly hardcoding the drive name into a path is going to bring you grief sooner or later.

It's not unusal to namespace headers, which uses paths relative to the top of a source tree. Relying on platform-specific behaviour like the dot-dot directory being the parent of the directory in which the current source file is found will break.

could I just include
 
#include "all_headers.h"
or
#include <all_headers.h>
 
and make precompiler to find it? (but i dont wont to copy this all_headers.h
out of my source folder to increase dependency confusion just to inform
compiler where ha can search for it ?)

Yes, that is how things are designed to work. The command-line switch for extending the search path for header files is -I (upper-case letter "i").

Share this post


Link to post
Share on other sites

OK, tnx this " -I path " seem to work,

 

Dont you know maybe the first?

 

g++ src1.o src2.o -o dst.o will link to obj only?

 

anyway when speaking about hard paths and burden of refectoring work

moving the paths to build scripts out of source is also maybe not quite ideal when refactoring (and at this project i am constattly refactoring 

filenames and folder names so tjis is still a burden - but i will use this way -I ..\ nothing better dont come to my mind

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement