Я пытаюсь добавить дополнительные пути, которые будут использоваться моей группой проектов во время компиляции. Поскольку С++ Builder 2010 использует msbuild, я пробовал посмотреть на документацию для этого, и в соответствии с тем, что я могу найти, дополнительныеLibPath должны быть проходимыми как свойство. то есть
msbuild /p:AdditionalLibPaths=C:\FooBar\Libs /t:build foo.groupproj
Но он не использует пути, которые я добавил. Ранее я заметил, что некоторые имена свойств различаются между VС++ и С++ Builder при передаче в msbuild и интересно, может ли С++ Builder использовать другое имя свойства для добавления дополнительных библиотек lib и include
Я не хочу заменять существующие пути, определенные в проекте, но добавлять дополнительные. Обоснованием этого является то, что когда проект строится на нашем сервере сборки, некоторые библиотеки находятся в стандартизованном месте, которое может отличаться от того, где оно было установлено на машине разработки.
msbuild acutally вызывает файл msbuild script, который, в свою очередь, вызывает дополнительные скрипты, включая теги .groupproj, используя тег. Я знаю, что при использовании тега создается новый экземпляр msbuild, поэтому я знаю, что мне нужно добавить свойство при выполнении этой задачи в моем script.
<MSBuild Targets="Build" Projects="..\Foo.groupproj" Properties="Config=Debug (property to add additional paths here!)" />
Update:
С++ Builder, похоже, использует IncludePath и ILINK_LibraryPath, но при этом они переписывают пути, уже определенные в файле проекта. Поскольку этот файл создается и поддерживается средой IDE, поэтому любые изменения, сделанные им для добавления вместо перезаписывания, будут перезаписаны средой IDE. Это странно, потому что похоже, что оно должно действительно добавлять значения
<IncludePath>..\FooBar\;$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;Common Components;..\Config\Config32;$(IncludePath)</IncludePath>
Обновление 2:
В CodeGear.Cpp.Targets я добавил свое собственное свойство под названием AdditionalIncludePaths в скриптинг PropertyGroup с путями include.
Вокруг строки 251
<PropertyGroup>
<BCC_NoLink>true</BCC_NoLink>
<ILINK_OSVersion Condition="'$(ILINK_OSVersion)'=='' And '$(NoVCL)'!='true'">5.0</ILINK_OSVersion>
<DCC_GenerateCppFiles>true</DCC_GenerateCppFiles>
<ShowStdOut Condition="'$(ShowStdOut)'==''">$(ShowGeneralMessages)</ShowStdOut>
<!-- _TCHAR mapping for Uni^H^H^H character selection -->
<StartupObj Condition="'$(_TCHARMapping)'=='wchar_t'">$(StartupObj)w</StartupObj>
<ILINK_StartupObjs Condition="'$(ILINK_StartupObjs)'==''">$(StartupObj)</ILINK_StartupObjs>
<BCC_GenerateUnicode Condition="'$(_TCHARMapping)'=='wchar_t'">true</BCC_GenerateUnicode>
<!-- Include Paths -->
<Win32LibraryPath Condition="'$(Win32LibraryPath)'==''">$(BDS)\lib</Win32LibraryPath>
<IncludePath Condition="'$(CBuilderIncludePath)'!=''">$(IncludePath);$(CBuilderIncludePath)</IncludePath>
<IncludePath Condition="'$(AdditionalIncludePath)'!=''">$(IncludePath);$(AdditionalIncludePath)</IncludePath>
<BCC_IncludePath Condition="'$(BCC_IncludePath)'!=''">$(BCC_IncludePath);$(IncludePath)</BCC_IncludePath>
<BCC_IncludePath Condition="'$(BCC_IncludePath)'==''">$(IncludePath)</BCC_IncludePath>
<BRCC_IncludePath Condition="'$(BRCC_IncludePath)'!=''">$(BRCC_IncludePath);$(IncludePath)</BRCC_IncludePath>
<BRCC_IncludePath Condition="'$(BRCC_IncludePath)'==''">$(IncludePath)</BRCC_IncludePath>
<DCC_IncludePath Condition="'$(DCC_IncludePath)'!=''">$(DCC_IncludePath);$(IncludePath)</DCC_IncludePath>
<DCC_IncludePath Condition="'$(DCC_IncludePath)'==''">$(IncludePath)</DCC_IncludePath>
<DCC_UnitSearchPath>$(DCC_IncludePath);$(Win32LibraryPath)</DCC_UnitSearchPath>
<DCC_ResourcePath>$(DCC_IncludePath)</DCC_ResourcePath>
<DCC_ObjPath>$(DCC_IncludePath)</DCC_ObjPath>
<TASM_IncludePath Condition="'$(TASM_IncludePath)'!=''">$(TASM_IncludePath);$(IncludePath)</TASM_IncludePath>
<TASM_IncludePath Condition="'$(TASM_IncludePath)'==''">$(IncludePath)</TASM_IncludePath>
Тогда я могу позвонить
msbuild /t:build /p:AdditionalIncludePaths=C:\Foo\Include foo.groupproj
Это прекрасно работает и делает то, что я хочу. Я просто должен сделать то же самое с библиотечными путями. Но я не хочу, чтобы это взломало один из файлов, предоставленных Embarcaderos. Это просто смешно: P... Не существует ли какой-либо официальной собственности для добавления путей включения и путей lib?