I have a small, but sometimes annoying problem… Lets say I have a class MyClass, with a MyClass.hxx
and MyClass.C. I include MyClass.hxx in MyClass.C, and I use ACLiC to load this into ROOT
Now, if I make some changes to MyClass.C root will notice this and a single ‘+’ will recompile the code. BUT
if I make some changes to MyClass.hxx root will not notice this and a single ‘+’ will not recompile but only
load the library. Is this normal or do I do something wrong?
Putting everything into one file is not an option.
ACLiC should have pick-up the modification of your .hxx files. After the 2nd time you run ACLiC there is a file named (in your case) MyClass_C.d which list all the headers ACLiC knows about. If your MyClass.hxx is not present in that list this must mean that the #include is hidden from CINT (do you have any #ifndef CINT)>
I tried with a very simple example, and indeed ALIiC picks upp any change to the include file… In my
much more complex app I have quite a few #ifndef CINT’s but not around the include file in question…
Is it possible to make cint show the code it sees (like the ‘-E’ option for g++)? Maybe I’m blind…
The rough equivalent of -E for rootcint is -T and to get the rootcint command used by ACLiC set gDebug to 7 before ACLiC actually compiles (i.e. gDebug = 7 followed by .L myscript.C++).
I often find that simply putting illegal code in various places lets me know which part of the header CINT sees or not.