разница между файлами SConscript и SConstruct? - PullRequest
0 голосов
/ 11 мая 2018

Будучи новичком в scons, я столкнулся с необходимостью преобразования проекта с несколькими модулями в одном репо с помощью общей сборки верхнего уровня. В каждом модуле уже есть файл SConstruct, позволяющий создавать их самостоятельно.

Читая о настройке иерархических сконов, я вижу, что идея состоит в том, чтобы использовать SConstruct верхнего уровня, который загружает файлы сборки подпроектов с помощью функции SConscript (), и эти файлы должны называться SConscript. Я нахожу остальную часть информации несколько расплывчатой ​​(или, может быть, TLDR?) - так что

  • интересно, что эти сценарии более низкого уровня должны быть SConscript файлы?
  • IOW, есть ли смысл / смысл / оценка? разница между SConscripts и SConstructs, кроме одного предназначен в качестве точки входа, в то время как другой просто "подстройка файл "?
  • Есть ли смысл рефакторинг SConstructs этих подпроектов в быть одним лайнером для вызова SConscript на том же уровне + приковать их до верхнего уровня Sconstruct?

Спасибо!

1 Ответ

0 голосов
/ 13 мая 2018

Ответьте на ваши вопросы при заказе

  1. Нет, файлы более низкого уровня не могут быть вызваны как угодно, так как вы указываете путь и имя файла в вызове SConscript ()
  2. Каждый SConscript оценивается в своей области видимости. Вы можете передать через Export () (или SConscripts exports = аргумент) и внести в SConscript (как бы вы его ни называли) через Import ().
  3. Полностью зависит, хотите ли вы выполнить какую-либо конфигурацию центрального / верхнего уровня для распространения на ваши подпроекты. Это все еще можно сделать с помощью операторов Import () в SConstruct подпроекта и затем проверить, определена ли переменная, которую вы ожидаете импортировать (с помощью try / кроме, возможно,)

Этот подпроект с SConstructs был сделан ранее. Скорее всего, лучше использовать Import () в ваших SConstructs в вашем подпроекте, а затем убедиться, что все, что вы ожидаете, было передано или нет, прежде чем использовать его. Оберните это обильными комментариями относительно того, почему вы делаете это, если подпроекты также используются автономно.

Это отвечает на ваш вопрос?

...