Как заставить scons написать цель сборки в каталоге сборки? - PullRequest
1 голос
/ 13 января 2012

Я пытаюсь создать статическую библиотеку с помощью Scons. Все, что я хочу сделать, - это собрать объектные файлы и библиотечный файл в каталоге сборки, который называется «build-release».

Используя VariantDir, я могу заставить scons создавать объектные файлы в каталоге build-release, но libStringUtilities.a все еще пишется в текущем каталоге. Почему?

пожалуйста, любая помощь будет приветствоваться.

Структура моей папки следующая.

MyLib/
  \--- project/
          \---- SConstruct
          \---- SConscript
  \--- src ( source files )
  \--- build-release ( build directory)

Вот мой сценарий ...

  Import('env')

  source_files = Glob('../build-release/*.cc')
  object_files = env.Object(source_files)
  env.StaticLibrary('StringUtilities',object_files)

... и файлы Sconstruct.

  import os

  env = Environment ( ENV = os.environ )

  Export('env')

  VariantDir('../build-release','../src',duplicate= False)
  SConscript('SConscript')

Ответы [ 2 ]

0 голосов
/ 16 января 2012

Я обычно использую предполагаемую структуру папок при использовании scons (sconstruct в папке верхнего уровня и sconscripts в подпапках), но я думаю, что проблема в том, что вы создаете библиотеку в исходной папке. Вот почему это заканчивается там.

Попробуйте с:

env.StaticLibrary('../build-release/StringUtilities',object_files)
0 голосов
/ 13 января 2012

Не пытаясь сделать это самостоятельно, попробуйте сделать так, чтобы ваш файл SConstruct выглядел так?

import os

env = Environment ( ENV = os.environ )

env.VariantDir('../build-release', '../src',duplicate= False)
env.SConscript('SConscript', 'env')
...