В настоящее время я пытаюсь создать систему сборки вокруг Scons, которая будет использовать драйвер Boost Wave в качестве пользовательского препроцессора кода на C++. После предварительной обработки код компилируется с помощью MSVC. В настоящий момент я запускаю волну для каждого исходного файла, увиденного Scons, из файла Sconscript. Это работает, но имеет проблему - это довольно медленно, потому что он не использует кеш компиляции Scons.Scons - использование пользовательского препроцессора с кэшем scons
Как бы вы порекомендовали интегрировать пользовательский шаг предварительной обработки в систему сборки SCons таким образом, чтобы использовался кеш компиляции? Очевидно, что мне также нужно правильное сканирование зависимостей #include, параллельная компиляция и т. Д. Я не очень опытен с SCons, поэтому я ищу, чтобы кто-то указал мне в правильном направлении.
Моего текущее два направления исследований:
- найти какой-нибудь способ для вызова пут/извлечения функции кэша вручную, но это рискованно - Я не хочу засорять кэш с недействительными записями.
- Создание настраиваемого инструмента/псевдобуйдера/что-то, что позволило бы мне выполнить две команды. Или попробуйте сделать у нас использование scons-инструментов. Это кажется сложным.
- Ответ Тома Таннера, который, кажется, страдает от зависимостей #include, которые не были обнаружены правильно.
Выглядит многообещающе, я изучаю его. Но как SCons узнает, что он должен скомпилировать предварительно обработанный файл? – Liosan
, потому что вы сказали это - см. Фрагмент кода. –
Ум, может быть, я не читаю его правильно, но после того, как я применил ваш фрагмент в нашей системе сборки, я получил сообщение об ошибке «Я не знаю, что делать с файлом X.wave, wave '"... – Liosan