Каким может быть самый простой способ включить программную трассировку Windows WPP в сборки SCons? - PullRequest
0 голосов
/ 07 мая 2020

Я задаю свой вопрос таким специфическим c способом, потому что боюсь, что более общая c форма может привести к чрезмерно теоретическим c дискуссиям о том, как все должно быть сделано лучше и наиболее подходящим способом (например, вопрос о действиях до и после обработки в SCons ).

Включение WPP фактически требует выполнения дополнительной команды (команд) перед компиляцией файла, и только даже если сборка процесс обнаруживает необходимость скомпилировать файл без какого-либо отношения к WPP.

Я бы заметил, что это легко достигается с помощью нескольких строк определений в общем файле страницы свойств Visual Studio, что делает эту работу для нескольких файлов в нескольких проектах, папки и т.д. c. абсолютно прозрачным для разработчиков способом.

Поэтому мне интересно, можно ли это сделать таким же простым способом с помощью SCons? У меня нет глубоких знаний ни о SCons, ни о фреймворках MSBuild; Я работаю с ними для простого практического использования, поэтому буду очень признателен за практический и полезный совет.

1 Ответ

1 голос
/ 12 мая 2020

Вот что я бы посоветовал.

SCons строит командные строки из переменных Environment (). Например, командная строка компиляции для создания общего объекта для c ++ хранится в SHCXXCOM (а переменная для того, что отображается пользователю при запуске команды, по умолчанию имеет значение SHCXXCOM, но ее можно изменить, изменив SHCXXCOMSTR).

Вернемся к проблеме. Предполагая, что у вас есть ограниченное количество шагов сборки, которые вы хотите обернуть, вы можете сделать что-то вроде.

env['SHCXXCOM'] = [ 'MPP PRE COMMAND LINE', env['SHCXXCOM'], 'MPP POST COMMAND LINE']

Вам нужно будет выяснить, с какими переменными вам нужно это сделать, но взгляните на справочную страницу, чтобы понять это.

https://scons.org/doc/production/HTML/scons-man.html

ps Я не пробовал это, но теоретически это должно работать. Дайте нам знать, если нет.

...