コンパイル中にプロジェクト グループが使用するパスを追加しようとしています。C++ Builder 2010はmsbuildを使用しているため、そのドキュメントを調べてみましたが、それによると、AdditionalLibPathsはプロパティとして渡すことができるはずです。すなわち
msbuild /p:AdditionalLibPaths=C:\FooBar\Libs /t:build foo.groupproj
しかし、私が追加したパスを使用していないようです。以前、 msbuildに渡されるプロパティ名がVC++とC++ Builderで異なることに気付きました。C++ Builderが別のプロパティ名を使用して、追加の lib フォルダーと include フォルダーを追加するのではないかと思いました。
プロジェクトで定義されている既存のパスを置き換えたくはありませんが、追加のパスを追加します。この理由は、プロジェクトがビルド サーバーでビルドされるときに、一部のライブラリが、開発マシンにインストールされている場所とは異なる可能性がある標準化された場所に存在するためです。
msbuildは実際にmsbuild スクリプト ファイルを呼び出します。このファイルは、 .groupprojスクリプトを使用して追加のスクリプトを呼び出します。鬼ごっこ。を使用すると、 msbuildの新しいインスタンスが作成されることがわかっています。これにより、スクリプトでそのタスクを実行するときにプロパティを追加する必要があることがわかります。
<MSBuild Targets="Build" Projects="..\Foo.groupproj" Properties="Config=Debug (property to add additional paths here!)" />
アップデート:
C++ 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に追加し、インクルード パスをいじりました。
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 が提供するファイルの 1 つをこのようにハッキングする必要はありません。それはばかげています:P ...インクルードパスとlibパスを追加するために設定する公式のプロパティはありませんか?