【问题标题】:How to compile a Delphi projectgroup using MSBuild called from an Embarcadero Makefile如何使用从 Embarcadero Makefile 调用的 MSBuild 编译 Delphi 项目组
【发布时间】:2011-04-12 09:41:56
【问题描述】:

我正在尝试编译来自 Virtual Treeview 的两个组件(VirtualTreesR.bpl 和 VirtualTreesD.bpl),我将它们组合在一个名为 VirtualTrees.groupproj 的 Delphi 项目组中。它们应该使用 MSBuild 编译,但此调用是从 (Embarcadero) Makefile 完成的。 Makefile 中的相关部分如下所示:

msbuild.exe /nologo /v:m /t:build /p:Config=Release "$(VTVDIR)\Packages\Delphi 2010\VirtualTrees.groupproj"

不幸的是这会导致MSB4040,因为环境变量BDS没有在cmd.exe中设置,而是在Makefile中。我在调用 msbuild 之前尝试了 SET BDS=$(BDS) ,但无济于事。我还尝试将 BDS 设置为 property(/p:BDS=($BDS);Config=Release),这导致了另一个错误(类似:在 %BDS%\bin\dcc32.exe 找不到编译器)。

来自 Makefile 的这个调用是在 CI 服务器上构建我们的产品的准备工作的一部分,我不能保证在那里设置了 BDS 变量。那么如何将 Makefile 中的 BDS 变量提供给 msbuild 以使其接受呢?

【问题讨论】:

    标签: delphi msbuild makefile


    【解决方案1】:

    在我的批处理文件中,我使用 rsvars.bat:

    call "C:\Program Files (x86)\CodeGear\RAD Studio\5.0\bin\rsvars.bat"
    MSBuild SomeProject.dproj ...
    

    (显然你必须调整路径。)

    【讨论】:

    • 谢谢。我的问题是:我有一个 Makefile,而不是批处理文件。 - 安迪
    • 在调用 make 之前不能调用 rsvars.bat 吗?
    • @andy:执行直接调用 MSBuild 的批处理文件(不是通过 make)有效吗?您可以在构建过程中调用这样的批处理文件而不是 make 吗?
    • 是的,这行得通。我会看看我是否可以为某些任务使用批处理而不是 make。非常感谢!
    • 通常 Delphi 开发人员不需要 MAKE,因为 MSBuild 可以完成所需的一切。
    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多