msbuild /p:AdditionallibPaths=C:\Foobar\libs /t:build foo.groupproj
但似乎没有使用我添加的路径.我以前注意到,当传递给msbuild时,VC和C Builder之间的某些属性名有所不同,并且想知道C Builder是否可能使用其他属性名来添加额外的lib和包含文件夹?
我不想替换项目中定义的现有路径,但附加其他路径.这样做的理由是,当项目建立在我们的构建服务器上时,某些库位于标准化的位置,可能与开发机器上安装的位置不同.
msbuild acertally调用一个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提供的文件.这只是可笑的:P …没有任何官方属性设置添加包括路径和lib路径?
解决方法 对于VS2013,只需要在运行msbuild之前定义环境变量:set "INCLUDE=%additional_include_path%;%INCLUDE%"set "liB=%additional_lib_path%;%liB%"REM use environment variables for INCLUDE and liB valuesset UseEnv=true
参考:MSBuild / Microsoft.Cpp / v4.0 / V120 / Microsoft.Cpp.targets
<Target name="SetBuildDefaultEnvironmentvariables" Condition="'$(UseEnv)' != 'true'">... <SetEnv name ="INCLUDE" Value ="$(IncludePath)" Prefix ="false" > <Output TaskParameter="OutputEnvironmentvariable" Propertyname="INCLUDE"/> </SetEnv>
但是看起来像INCLUDE和liB附加在项目属性中指定的附加include / lib目录之后.
总结以上是内存溢出为你收集整理的msbuild – 从命令行编译时添加附加库并包含路径全部内容,希望文章能够帮你解决msbuild – 从命令行编译时添加附加库并包含路径所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)