Windows, Scons und pkg-config



  • Hallo,
    Ich habe ein kleines Projekt geschrieben, was ich demnächst veröffentlichen will. Bevor ich das allerdings mache, würde ich es gerne ein wenig portabler mache und stoße dabei auf Fehler, die ich nicht alleine beheben kann.
    Ich bin gestern von einer selbstgeschriebenen Makefile auf scons umgestiegen. Die SConstruct funktioniert unter meinem Debian super, aber auf Windows macht er Probleme. Das Projekt benötigt gtkmm-2.4 und sqlite3. Für die Include- und Lib-Verzeichnisse wollte ich pkg-config verwenden, aber scons sagst mir:
    "Der Befehl 'pkg-config --libs --cflags gtkmm-2.4' konnte nicht gefunden werden...".
    Wenn ich die Konsole aufrufe und exakt das selbe eingebe, funktioniert es. Die Path-Variable sollte also richtig gesetzt sein. Aber woran scheitert es denn dann?
    Habe folgendes installiert:
    Python 2.7
    Scons 2.0.1
    MinGW 4.5 (bei der Version bin ich mir nicht sicher... das neueste auf jeden Fall)
    Gtkmm-2.20.3 dev

    Die Path-Variable für gtkmm hat das Installationsprogramm selber gesetzt, die für mingw auch.
    Die SConstruct sieht so aus:

    #SConstruct
    env = Environment()
    
    conf = Configure(env)
    
    libs = ['gtkmm-2.4', 'sqlite3']
    cheader = ['assert.h', 'locale.h']
    
    #for lib in libs:
    #	if not conf.CheckLib(lib):
    #		print "Couldn't find " + lib + "!"
    #		Exit(1)
    
    for header in cheader:
    	if not conf.CheckCHeader(header):
    		print "Couldn't find " + header + "!"
    		Exit(1)
    
    env = conf.Finish()
    env.Append(CXXFLAGS = ' -Wall -O2')
    
    for lib in libs:
    	env.ParseConfig("pkg-config --cflags --libs " + lib)
    
    env.Program(target='gchefkoch', source=Glob('./src/*.cc'))
    

    Verzeiht mir kleine Fehler in der SConstruct ;)... meine erste :).
    Also nochmal zusammenfassen:
    scons findet pkg-config mittels ParseConfig nicht, aber in der Konsole funktioniert es manuell einwandfrei.
    Danke schonmal

    nobody44



  • Problem gelöst durch Hilfe von einem Entwickler von SCons:

    import os
    env = Environment()
    env["ENV"]["PATH"] = os.environ.get("PATH")
    

    Ich hatte eigentlich gedacht, dass Python die PATH-Variable schon verwendet, da ich das ParseConfig testhalber mal weggenommen habe und er den Compiler auf jeden Fall gefunden und ausgeführt hat (g++).Kamen natürlich haufenweise Fehlermeldungen, wegen Header nicht gefunden und undefinierte Funktion... Naja, egal, jetzt gehts ja und ich weiß woran es lag :).

    nobody44


Anmelden zum Antworten