The GCC -MM and -MMD options generate dependencies. However, when I try
to build with Rogue Wave, not only to I get the local dependencies, but
I also get all the STL and Rogue Wave dependencies. Note that RogueWave
has its own version of the STL.
The C++ file's header lists is:
#include <iostream>
#include
#include <string>
#include <iterator>
#include "thisfile.h"
The command line is:
g++-I$(RWPATH)/include -I$(RWPATH) -D_RWCONFIG_rmd -MMD -c thisfile.cc
What I should see in thisfile.d is:
thisfile.o: thisfile.cc thisfile.h
What I do see is:
thisfile.o: thisfile.cc <RWPATH>/include/iostream
\ <RWPATH>/include/istream \
....
thisfile.h
According to the GCC man page, the -MM (and -MMD) options should
exclude system headers (eg. those files included in angle brackets).
I've tried a few different options. My partner in Toronto actually
found that it was trying to compile some of the RogueWave files such
as vector.cc since it is implicitly included
as <RWPATH>/include/vector.cc into the .i file by the preprocessor.
I'm not worried about the performance implications regarding the
inclusion of all the header files, but I am concerned about make
implicitly wanting to compile the RW .cc files. One possible solution
is to create a script to remove all the lines with <RWPATH>, but I'm
looking for a more elegant solution.
--
Jerry Feldman
Boston Linux and Unix user group
http://www.blu.org PGP key id:C5061EA9
PGP Key fingerprint:053C 73EC 3AC1 5C44 3E14 9245 FB00 3ED5 C506 1EA9