Создание многокомпонентного проекта с помощью SCons - PullRequest
0 голосов
/ 29 октября 2011

Я пытаюсь настроить SCons для создания своего проекта, и мне трудно понять, как именно организовать вещи.Он состоит в основном из следующих частей:

Module: отдельный небольшой проект c, который собирает небольшую библиотеку, уже настроенную с помощью SCons.

Core: другой проект c, уже настроенный сScons.Он генерирует некоторый код, вызывая TheScript для некоторых файлов, входящих в проект.

Main: проект, который напрямую использует файлы как Module, так и Core;он генерирует код, вызывая TheScript для файла в Module, и ему необходимо включить как исходные файлы в Core, так и библиотечные файлы, созданные при построении Core.

TheScript Один файл Pythonэто где-то живет само по себе.

Мой вопрос: как мне это организовать?Для Core и Main мне нужны оба проекта, чтобы каким-то образом вызвать новейшую версию TheScript.В настоящее время у меня есть символическая ссылка на скрипт в каждом каталоге проекта, но это вряд ли является долгосрочным решением.Та же проблема возникает, когда я хочу ссылаться между проектами: я не хочу просто вводить магические пути, которые работают на моей машине, но я хочу сохранить их как отдельные проекты.

Что такоехороший способ решить это?Я видел программное обеспечение для управления версиями, используемое для чего-то подобного, где задействованы проекты зависимостей, но до сих пор я использовал bazaar только для прямого управления версиями.Я понятия не имею, с чего начать с проблем, которые я описал.Мне не нужны конкретные примеры на базаре - общие концепции и ссылки на документацию будут хороши.

1 Ответ

1 голос
/ 08 февраля 2012

Обычно это делается с помощью иерархической сборки SCons Иерархическая сборка Но если вы хотите сохранить и Core, и Main как отдельные проекты, это не поможет.Я никогда не пробовал, но, возможно, вы могли бы иметь Sconscript и SConstruct в Core и Main.SConsctruct позволит ему быть автономным проектом, в то время как SConscript позволит создать его все вместе, что позволяет правильно проверять зависимость.

Вы можете организовать проект следующим образом:

.
|-- SConstruct
|-- Core
|     |--
|     |-- SConscript
|     `-- SConstruct
|-- Main
|     |--
|     |-- SConscript
|     `-- SConstruct
`-- Module
      |--
      `-- SConscript

Что касается последней версии TheScript, вы можете вызывать ее в файлах SConscript без указания пути, а в корневом уровне SConstruct добавить переменную PATH Unix Env, например: Распространение PATH из внешнегоСреда

Кроме того, вы можете рассмотреть функцию репозитория SCons: Построение из репозитория кода в руководстве пользователя SCons.Это не позволит мне публиковать более 2 гиперссылок для предотвращения спама.

Надеюсь, это поможет,

Брейди

...