Fehler beim kompilieren von Ogre Testprogramm mit scons



  • Hallo Leute,

    ich wollte mich einmal mit scons beschäftigen, und daher ein Ogre Programm mit scrons kompilieren, leider kriege ich folgende Fehlermeldung.

    scons: Reading SConscript files ...
    Checking for C++ header file Ogre.h... no
    Ogre must be installed!
    

    Das SConstruct sieht wie folgt aus:

    platform = ARGUMENTS.get('OS', Platform())
    mode = ARGUMENTS.get('mode', "release")
    
    if platform.name == "linux":
       listinc=[
          # our main include directory
          'include',
          # location of ogre includes
          '/usr/include/OGRE',
          # location of ois includes
          '/usr/include/OIS',
          ]
    else:
       listinc=[
          # our main include directory
    			'include',
    			# location of ogre includes
    			'E:/ogre-eihort/ogrenew/OgreMain/include',
          # location of ois includes
    			'E:/ogre-eihort/ogrenew/Dependencies/include/OIS',
    			]
    
    if platform.name == "linux":
       debugcflags=['-g']
       releasecflags=[]
    
       if mode=="debug":
          env=Environment(CPPPATH=listinc, LIBPATH='.', CCFLAGS = debugcflags)
       else:
          env=Environment(CPPPATH=listinc, LIBPATH='.', CCFLAGS = releasecflags)
    else:
       debugcflags = ['-W1', '-GX', '-EHsc', '-D_DEBUG', '/MDd', '/Zi']   #extra compile flags for debug
       releasecflags = ['-O2', '-EHsc', '-DNDEBUG', '/MD']         #extra compile flags for release
    
       if mode=="debug":
          env=Environment(CPPPATH=listinc, LIBPATH='bin/windows/debug'
              , CCFLAGS = debugcflags, CPPDEFINES=["WIN32", "_DEBUG", "_WINDOWS"], LINKFLAGS='/DEBUG'
               )
       else:
          env=Environment(CPPPATH=listinc, LIBPATH='bin/windows/release'
              , CCFLAGS = releasecflags, CPPDEFINES=["WIN32", "NDEBUG", "_WINDOWS"]
               )
    
    # check for required include files and libraries
    conf = Configure(env)
    if not conf.CheckCXXHeader('Ogre.h'):
       print 'Ogre must be installed!'
       Exit(1)
    if not conf.CheckCXXHeader('OISPrereqs.h'):
       print 'OIS must be installed!'
       Exit(1)
    if platform.name == "linux":
       if not conf.CheckLib('OgreMain'):
          print 'OgreMain library must be in path'
          Exit(1)
       if not conf.CheckLib('OIS'):
          print 'OIS library must be in path'
          Exit(1)
    
    # list of files needed for compiling the program
    main_program_list=Split("""
       src/SampleApp.cpp
       """)
    
    if platform.name == "linux":
       # list of libraries needed for linking
       libs_list=Split("""
          OgreMain
          OIS
          """)
    else:
       # list of libraries needed for release
       libs_release_list=Split("""
          c:/ogre-eihort/ogrenew/OgreMain/lib/Release/OgreMain
          c:/ogre-eihort/ogrenew/Dependencies/lib/Release/OIS
          kernel32.lib
          user32.lib
          gdi32.lib
          winspool.lib
          comdlg32.lib
          advapi32.lib
          shell32.lib
          ole32.lib
          oleaut32.lib
          uuid.lib
          odbc32.lib
          odbccp32.lib
          """)
       # list of libraries needed for debug
       libs_debug_list=Split("""
          c:/ogre-eihort/ogrenew/OgreMain/lib/Debug/OgreMain_d
          c:/ogre-eihort/ogrenew/Dependencies/lib/Debug/OIS_d
          kernel32.lib
          user32.lib
          gdi32.lib
          winspool.lib
          comdlg32.lib
          advapi32.lib
          shell32.lib
          ole32.lib
          oleaut32.lib
          uuid.lib
          odbc32.lib
          odbccp32.lib
          """)
    
    if platform.name == "linux":
       if mode=="debug":
          env.Program('bin/linux/debug/main_d', main_program_list, LIBS=libs_list, LIBPATH='.')
       else:
          env.Program('bin/linux/release/main', main_program_list, LIBS=libs_list, LIBPATH='.')
    else:
       if mode=="debug":
          env.Program('bin/windows/debug/main_d', main_program_list, LIBS=libs_debug_list, LIBPATH='.')
       else:
          env.Program('bin/windows/release/main', main_program_list, LIBS=libs_release_list, LIBPATH='.')
    

    Würde mich über jede Hilfe freuen.

    mfg Darian



  • Ich kenne mich zwar mit Ogre nicht aus, aber bei dieser Meldung würde ich mal stark vermuten, dass er den Header nicht findet, weil er entweder einfach nicht da ist (Ogre nicht installiert) oder der entsprechende include-Pfad nicht gesetzt ist.



  • Hallo und danke für die Antwort.

    Aber die Datei /usr/include/OGRE/Ogre.h ist vorhanden. Das selbe habe ich natürlich auch gedacht, aber ist installiert und genau wie angegeben vorhanden.

    Darum dachte ich vielleicht ist es etwas mit der Funktion CheckCXXHeader, und da kenne ich mich dann zu wenig aus, darum musste ich nachfrgen.

    Mit freundlicen Grüßen
    Darian



  • das Problem ist, dass die Platform nicht "linux" sondern "posix" heißt

    suche nach den If bedingunen in denen platform.name == "linux" steht und änder sie in platform.name == "posix" und es sollte funktionieren



  • Hallo!

    Ja das macht Sinn, jetzt kompiliert es denke ich richtig.

    Das Programm selbst funktioniert zwar nicht. Muss ich noch einmal sehen was da los ist.

    Also immer bei scons muss ich posix verwenden, aber Ubuntu ist gar kein posix kompatibles System. (zumindest laut wiki)

    Jedenfalls danke für die Infos.

    lg Darian


Anmelden zum Antworten