Мой вопрос: как scons -c узнает, в каких каталогах найти объекты для удаления?
Он знает обо всех местах расположения целей, потому что построилих, и очистка, по существу, следует тем же правилам, которые использовались, чтобы знать, где построить цели, так же, как и знать, где цели должны быть очищены.
Как добавитьновый путь / папка, которая также очищается вместе с другими путями?
Из Страница руководства SCons :
-c, -clean, --remove
Очистить, удалив все целевые файлы, для которых указана команда построения.Также удалите все файлы или каталоги, связанные с командой построения, используя функцию Clean ().Не удаляет любые цели, указанные функцией NoClean ().
Ключевая формулировка здесь заключается в том, что удаляются все целевые файлы .Если вы также хотите очистить каталоги, вам нужно явно использовать функцию Clean :
Clean (цели, файлы_или_dirs), env.Clean (цели, файлы_или_диры)
Указывает список файлов или каталогов, которые следует удалять всякий раз, когда цели указываются с помощью параметра командной строки -c.Указанные цели могут быть списком или отдельной целью.Несколько вызовов Clean являются законными и создают новые цели или добавляют файлы и каталоги в чистый список для указанных целей.
Несколько файлов или каталогов должны быть указаны либо как отдельные аргументы метода Clean, либо как список.Clean также примет возвращаемое значение любого из методов Builder среды конструирования.
Связанная функция NoClean переопределяет вызов Clean для одной и той же цели, и все цели, переданные обеим функциям, не будут удалены параметром -c,
Примеры:
Clean ('foo', ['bar', 'baz'])
Clean ('dist', env.Program ('hello', 'hello.c '))
Clean ([' foo ',' bar '],' Some_else_to_clean ')
В этом примере при установке проекта создается подкаталог для документации.Это утверждение приводит к удалению подкаталога, если проект деинсталлирован.
Clean (docdir, os.path.join (docdir, projectname))
Это будет иметь цели, которые должны быть связаны с тем, какие файлы или каталоги вы хотите очистить, а затемкогда одна из этих целей будет очищена, она также очистит указанные файлы и каталоги, которые сами не могут быть целями.