scons - mehrere Programme



  • Ich habe ein Framework programmiert welches ich mit Scons übersetze. Nun habe ich dazu eine zusätzliche Anwendung programmiert, welche vom Framework abgespeicherte Daten öffnen können soll. Dementsprechend nutzen die beiden Programme gleiche Source und Headerdateien.

    Bei den Headerdateien ist das alles ja kein Problem, einfach inkludieren und fertig. Aber der gcc linkt mir einfach die Objektdateien nicht zusammen 😞

    Das ganze sieht so aus:
    ./src/ - hier sind die Daten des Frameworks
    ./AB/ - hier sind die daten des zusätzlichen Programms.

    Nun hab ich eine ./SConstruct in der beide Programme eingetragen sind:

    SConscript('src/SConscript', variant_dir='../Build/HIRN', duplicate=0)
    SConscript('AB/SConscript', variant_dir='../Build/AB', duplicate=0)

    Entsprechend habe ich auch zwei SConscript Dateien:
    ./src/SCon\1:

    env = Environment(CC = 'g++', CCFLAGS = '-D_REENTRANT')
    env.Program('#HIRN', [Glob('./.cpp'), Glob('Daten/.cpp'), Glob('Module/.cpp'), Glob('Klassen/.cpp')], LIBS=['boost_thread', 'boost_serialization', 'boost_system', 'vrmusbcam', 'cv', 'highgui', 'GL', 'glut', 'GLU'], LIBPATH='.')

    und ./AB/SCon\1:

    AB = Environment(CC = 'g++', CCFLAGS = '-D_REENTRANT')
    AB.Program('#AB', [Glob('AB.cpp'), Glob('../src/.cpp'), Glob('../src/Daten/.cpp'), Glob('../src/Module/.cpp'), Glob('Klassen/.cpp')], LIBS=['boost_thread', 'boost_serialization', 'boost_system', 'vrmusbcam', 'cv', 'highgui', 'GL', 'glut', 'GLU'], LIBPATH='.')

    Ich dachte eigentlich das müsste so funktionieren, tut es aber nicht. Von AB wird immer nur die AB.cpp übersetzt und danach keine Objektdatei von HIRN gebunden. Beispiel:

    /home/fabske/AB.o: In function main': AB.cpp:(.text+0x137): undefined reference toDaten::Daten()'
    collect2: ld returned 1 exit status


Log in to reply