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

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

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

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

1 Ответ

3 голосов
/ 05 октября 2011

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

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

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

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

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

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

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

...