В моей компании мы используем Pegasus. Это является большим.
Вы видели опцию --interactive в Scons, там вы можете очищать и создавать определенные цели.
Я не думаю, что есть способ сделать это напрямую. Если у рассматриваемого исходного файла есть один очевидный вывод, например test.o
, созданный из test.c
, то удаление test.o
приведет к перекомпиляции исходный файл.
Если вместо этого вы хотите коснуться test. h
, который включен из нескольких различных исходных файлов, возможно, вам лучше очистить весь проект, чтобы убедиться, что все будет восстановлено.
Сказав это, вы можете прочитать о Decider ()
функция , которая позволяет вам выбрать, как будут обрабатываться зависимости файлов. Вы даже можете выбрать пользовательскую функцию принятия решения для определенных файлов в вашем проекте, поэтому, если у вас есть какой-то глобальный файл заголовка, который вы хотели бы коснуться
и перестроить, вы можете это сделать.
Обновление: чтобы ответить на ваш последний вопрос, просто удалите файл G. Scons воссоздает его из F, запустив X при следующей сборке.
вы можете прочитать о функции Decider ()
, которая позволяет вам выбирать, как будут обрабатываться зависимости файлов. Вы даже можете выбрать пользовательскую функцию принятия решения для определенных файлов в своем проекте, поэтому, если у вас есть какой-то глобальный файл заголовка, который вы хотите коснуться
и перестроить, вы можете это сделать.
Обновление: чтобы ответить на ваш последний вопрос, просто удалите файл G. Scons воссоздает его из F, запустив X при следующей сборке.
вы можете прочитать о функции Decider ()
, которая позволяет вам выбирать, как будут обрабатываться зависимости файлов. Вы даже можете выбрать пользовательскую функцию принятия решения для определенных файлов в вашем проекте, поэтому, если у вас есть какой-то глобальный файл заголовка, который вы хотели бы коснуться
и перестроить, вы можете это сделать.
Обновление: чтобы ответить на ваш последний вопрос, просто удалите файл G. Scons воссоздает его из F, запустив X при следующей сборке.
Я создаю фиктивный целевой файл с полной датой вплоть до часов, минут и секунд. Затем у меня есть другие шаги, которые зависят от этого фиктивного целевого файла. Это изменит значение md5 каждый раз, когда этап сборки перекомпилируется, и вызовет перекомпиляцию последующих шагов. В качестве альтернативы вы можете удалить фиктивную цель, и это тоже приведет к каскадной повторной компиляции.
Лично я считаю это очень полезным, потому что я не могу предсказать весь вывод каждого отдельного шага в моем процессе сборки EDA. Я также не хочу пытаться предсказать весь результат каждого шага сборки из-за затрат на обслуживание.
Я уверен, что функция Decider (), как упомянул Грег, больше похожа на scons, но мне лично нравится иметь файлы отметок времени.
Извлеките из файла SConstruct узел, который представляет ваш файл. После этого вы сможете использовать Node.always_build (true) , чтобы убедиться, что он построен, я думаю, это заставит его зависимые элементы также быть перестроены.