Как выполнить сборку из исходного кода с помощью scons?
-
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