[Scons-users] Generating header from cpp file causes cycle
    Ivan Nedrehagen 
    ivan at nedrehagen.com
       
    Sat Mar 18 22:00:12 EDT 2017
    
    
  
I have a unit test library that generates headers from the cpp files 
that contains tests.
Lately with my updated version of SCons (2.5.0) I get dependency cycles.
(It is very hard to debug these cycles, because --tree doesn't output 
anything)
A case that reproduce the problem:
--- SConstruct ---
def create_header(target, source, env):
     txt = " class Test {}; \n"
     file = open(str(target))
     file.write(txt)
env = Environment()
headerBuilder = env.Builder(action=create_header)
env.Append(BUILDERS={"Header": headerBuilder})
header = env.Header("test.h", "test.cpp")
exe = env.Program("test.cpp")
--- test.cpp ---
#include "test.h"
int main() {
   Test test;
   return 0;
}
--- Result ---
scons: *** Found dependency cycle(s):
   test.h -> test.h
--- End of Case ---
Why is this failing? I understand that the test.o should be dependent on 
test.h, but why is suddenly test.h depending on itself?
I tried to set target_scanner and source_scanner to None in the builder 
just to see if this made a difference, but no.
How can I express a builder that builds header files from cpp files 
without creating a builder that build dependency cycles?
    
    
More information about the Scons-users
mailing list