How to force Scons output (exe, obj, lib & dll) to specific build directory?

后端 未结 4 1271
滥情空心
滥情空心 2020-12-18 23:07

I\'ve been trying to get scons to output exe, obj, lib and dll files to a specific build directory.

My file structure looks like this:

/projectdir
          


        
4条回答
  •  萌比男神i
    2020-12-18 23:55

    I was using a two-file method like richq's answer, but although the final build products (libs, programs) were going into the right variant directory, the object files were still going to the source directory.

    The solution turned out to be to glob the source files by relative path instead of absolute. I have no idea why.

    My second scons file originally looked like this. Note globbing by absolute path - when I first wrote this I didn't realize paths would automatically be relative to the scons file.

    import os, inspect
    env = Environment()
    packageDir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
    src = Glob(os.path.join(packageDir, "src/*/*.c*"), strings=True, source=True)
    env.Program('Foo', source = src)
    

    And that resulted in *.obj ending up under src/ and the program under my variant dir. When I changed it to the following, the object files also went to the variant dir:

    env = Environment()
    src = Glob("src/*/*.c*", strings=True, source=True) 
    env.Program('Foo', source = src)
    

    Using absolute paths is probably a noob mistake - I'm relatively new to both scons and Python - but I thought I'd share it in case anyone else has the same frustrating problem.

提交回复
热议问题