Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


ling obj+obj to obj and 'where headers'

  • You cannot reply to this topic
2 replies to this topic

#1 fir   Members   -  Reputation: -460

Like
0Likes
Like

Posted 21 March 2014 - 07:56 AM

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

 
 

 

 

 

 



Sponsor:

#2 Bregma   Crossbones+   -  Reputation: 5242

Like
1Likes
Like

Posted 21 March 2014 - 08:15 AM

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").
Stephen M. Webb
Professional Free Software Developer

#3 fir   Members   -  Reputation: -460

Like
0Likes
Like

Posted 21 March 2014 - 11:15 AM

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







PARTNERS