More n00b questions... SubDir, SubInclude, etc

Added by David Cowan over 2 years ago

If I have a project structure laid out like this (and unfortunately I can't change it right now -- its laid out like this for legacy reasons)

\Projects
   engine
       component_1
       component_2
       ...
   game
        source

I've gotten the engine and all its components to compile using jam with the following....
\Projects\settings.jam <-- common settings used across the engine and game components, etc
\Projects\engine\engine.jam <-- engine root file... uses SubInclude for each of the component parts
\Projects\engine\component_1\component_1.jam <-- uses C.Library to add all of the component source files

It's pretty straight forward so far, and works really well/fast.

However - I've been building from the \Projects\Engine folder and specifying the engine.jam file as the first one to build... which loads ..\settings.jam first to load all the common elements for the engine and game.
The engine.jam file then uses SubInclude to load a small jam file for each component library which makes up the engine.

This has been working thus far as I have slowly played around with configs, platforms and so on...

However, now that the engine is building successfully, I've moved on to the game/application part... and I'm getting all confused about the use of TOP, SubDir and SubInclude.

Things were fine when I built the engine from the command line, from \Projects\engine... but now I want the actual 'root' (or first) jamfile to be the one located in \Projects\game.

I want \Projects\game to load and build the engine first (which is made up of all the component static libraries), and then continue to build and link the game executable.

So...
When I use SubDir TOP ; -- is this defining TOP to be the current folder?
What happens if it's already set?
Should I be defining TOP on the command line during invokation?
Is it OK to use SubInclude directives with '..' path components?
Should I actually have a 'root' jam file in \Projects\game.jam which defines the TOP and SubIncludes \Projects\Engine\engine.jam and \Projects\game\game.jam ?
Whats the best way to lay out the files and the way they include each other?

Sorry for all the questions... the docs don't really explain the full use of these functions, and the test apps are a bit simplistic

(Either that, or I'm just not getting it - which is far more likely :) )

Thanks


Replies (3)

RE: More n00b questions... SubDir, SubInclude, etc - Added by David Cowan over 2 years ago

Ignore me... got it.

I found a bunch of extra HTML documentation in the src folder.

RE: More n00b questions... SubDir, SubInclude, etc - Added by Joshua Jensen over 2 years ago

The documentation in the src/ folder is from the original Jam code. I thought I pulled all relevant bits into the docs/ folder. What part did you find that was useful?

(I'll answer you questions above soon.)

-Josh

RE: More n00b questions... SubDir, SubInclude, etc - Added by David Cowan over 2 years ago

I came across the jamplus/src/jamfile.html file - the section entitled "Handling Directory Trees". I didn't find anything like that in the jamplus/docs/html folder

(However, it's worth noting that the documentation set that I was using is a CHM which I built from a modified .doxyfile -- I find it tedious to search collections of HTML files; I wanted a single file that I could search/index, so I built my own. It is entirely possible that the "Handling Directory Trees" section may not have been compiled into the CHM for some reason)

Dave

(1-3/3)