Получить включенные каталоги для пользовательского этапа сборки

Я хотел бы знать, есть ли возможность получить список включаемых каталогов проекта при сборке файлов с пользовательским шагом сборки.

Представьте себе следующую ситуацию: мой проект состоит из A.cpp, B.cpp и C.blah. В свойствах проекта в поле "C/C++" -> "Общие" -> "Дополнительные каталоги включения" я указал список включаемых каталогов, которые будут использоваться для A.cpp и B.cpp. Теперь для C.blah я указываю пользовательский инструмент для сборки и пишу в "Командная строка" -> "mytool.exe C.blah -I*Direcotries?* -O C.obj". Как мне теперь получить список включаемых каталогов, указанных для C / C++ на этом шаге? Когда я нажимаю "Макросы", такого макроса нет, что дает мне полный список включений.

Кто-нибудь знает о возможности достижения этой цели?

1 ответ

Решение

Я думаю, что нашел ответ, однако неполный.

В листах свойств можно указать что-то вроде этого:

<PropertyGroup>
    <ProjectIncludeDir>@(ClCompile->'%(AdditionalIncludeDirectories)')</ProjectIncludeDir>
</PropertyGroup>

Это сделает макрос $(ProjectIncludeDir) доступным для пользовательских шагов сборки, также содержащих список включаемых каталогов.

Проблема с этим подходом в том, что строковые операции в этом макросе больше невозможны. Например, рассмотрим следующее:

<ProjectIncludeDirDot>$(ProjectIncludeDir.Replace(';',','))</ProjectIncludeDirDot>

Это приводит к макросу $(ProjectIncludeDirDot) в @(ClCompile->'%(AdditionalIncludeDirectories)'). Кажется, что преобразования оцениваются после оценки макроса, что нарушает эту замену. Если кто-то знает для лучшего решения, пожалуйста...

Другие вопросы по тегам