Как выполнить сборку из исходного кода с помощью scons?

StackOverflow https://stackoverflow.com/questions/1762044

  •  21-09-2019
  •  | 
  •  

Вопрос

Я использую cmake для создания своих проектов из исходного кода, что действительно удобно, поскольку вы избегаете загрязнения вашего исходного каталога ненужными файлами.

Предполагая, что CMakeLists.txt находится в текущем каталоге, это можно было бы сделать следующим образом:

mkdir build
cd build
cmake ..
make

Как я могу сделать то же самое в scons?

Это было полезно?

Решение

В вашем SConstruct файл, вы используете вариант dir:

SConscript("main.scons", variant_dir="build", duplicate=0)

Затем в main.scons вы все устроили как обычно:

env = Environment()
env.Program(target='foo', source=Split('foo.c bar.c'))

Это возможно сделать без жесткого кодирования варианта dir в SConstruct с помощью (ab) с использованием репозиториев, но в этом подходе есть свои ошибки.Для справки, вы должны выполнить описанное выше следующим образом для сборки в другом каталоге:

mkdir mybuild
cd mybuild
scons -Y .. -f ../main.scons

Самый простой и выполнимый способ - это просто использовать variant_dir.Затем вы запускаете это как обычно из исходного каталога верхнего уровня.Все артефакты сборки создаются в build подкаталог.

В ответ на JesperEкомментарий, вот как вы могли бы написать SConstruct верхнего уровня, чтобы добавить необязательный каталог сборки с именем:

AddOption('--build', default='build')
SConscript("main.scons", variant_dir=GetOption('build'), duplicate=0)

Затем вы должны вызвать это из командной строки следующим образом, чтобы создать каталог сборки с именем "baz".:

$ scons --build=baz
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top