gpt4 book ai didi

delphi - 我可以在 msbuild 命令行中添加条件定义吗?

转载 作者:行者123 更新时间:2023-12-03 14:36:48 27 4
gpt4 key购买 nike

我有以下示例代码:

program boohoo;

{$APPTYPE CONSOLE}

{$IFDEF boo}
{$MESSAGE warn 'boo'}
{$ENDIF}

{$IFDEF hoo}
{$MESSAGE warn 'hoo'}
{$ENDIF}

begin
end.

在项目选项中定义了条件 boo。我希望能够添加条件 hoo 作为我的 msbuild 命令行的一部分。

我已经尝试过这样的:

msbuild boohoo.dproj /p:Config=Release;DCC_Define="$(DCC_Define);hoo"

输出显示 hoo,但不显示 boo。当我使用详细输出查看 dcc32 命令时,我看到

-D$;hoo

显然我可以这样做:

msbuild boohoo.dproj /p:Config=Release;DCC_Define="boo;hoo"

但自然地,我想使用项目选项中声明的任何条件加上我在命令行上指定的内容。

有什么方法可以让我引用底层配置中的值来指定此属性吗?

最佳答案

免责声明:我自己还没有使用 MsBuild,所有内容均取自文档和一些 IDE 实验

根据 MsBuild 命令行引用 ( http://msdn.microsoft.com/en-us/library/ms164311.aspx ):

/property:name=value

Sets or overrides these project-level properties, where name is the property name and value is the property value. Use a semicolon or a comma to separate multiple properties, or specify each property separately. /p is also acceptable. For example: /property:WarningLevel=2;OutputDir=bin\Debug

您可以对属性值执行的所有操作都是设置或覆盖。从项目文件添加属性值要么是不可能的,要么是隐藏功能的情况。

但我想您可以做的是在 dproj 文件中定义一个自定义属性,并使用“”作为默认值:

<PropertyGroup>
<ExtraDefines> </ExtraDefines>
</PropertyGroup>

在定义语句中引用该内容

<DCC_Define>DUNIT;$(ExtraDefines);$(DCC_Define)</DCC_Define>

在 IDE 中应为 DUNIT;$(ExtraDefines)

然后在命令行中指定它:

msbuild boohoo.dproj /p:Config=Release;ExtraDefines="hoo"

我确实使用 IDE 测试将 $(ExtraDefines) 添加到项目的“包含”选项中。至少这并没有让我感到恶心,即使没有在 dproj 中定义该选项。 IDE 由此生成的命令行是:

...rad studio\7.0\bin\dcc32.exe --no-config -B -Q -DDEBUG;DUNIT; -E....

这似乎表明 $(ExtraDefines) 已被淘汰,因为它没有任何值(value)。并且应该使用 MSBuild 来获取它并在命令行上指定一个值。

关于delphi - 我可以在 msbuild 命令行中添加条件定义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8507372/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com