MSBuild 命令行编译Delphi

这篇具有很好参考价值的文章主要介绍了MSBuild 命令行编译Delphi。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

msbuild命令,Delphi,msbuild,Delphi 命令行,msbuild Delphi,Powered by 金山文档

为了构建项目,IDE现在使用MSBuild而不是以前的内部生成系统。IDE中的build、compile和make命令调用Microsoft的新生成引擎:MSBuild,它提供了全面的依赖性检查。MSBuild项目文件基于XML,包含描述项目的特定项、属性、任务和目标的部分。

有关MSBuild的详细信息,请参阅Microsoft文档。

一、将项目迁移到MSBuild

如果打开早期存在的项目(例如扩展名为.bdsproj的项目),IDE会自动将该项目转换为使用MSBuild,并将项目扩展名更改为.dproj(对于Delphi项目)或.cbproj(对于C++项目)。

项目组也被转换为MSBuild,并被赋予项目组扩展名.groupproj。

二、构建项目

可以在不了解MSBuild的情况下构建项目,因为IDE为您处理所有细节。Project>Compile和Project>Build命令都调用MSBuild,但每个命令的作用域不同。

还可以通过使用.dproj文件运行MSBuild.exe,从命令行显式生成项目。

要在自定义命令环境中调用MSBuild,请选择“开始”|“程序”|“Embarcadero RAD Studio Alexandria”|“RAD Studio Command Prompt”。此命令窗口自动设置了可执行文件的路径和安装目录的变量。

注:
实际运行的是安装目录下的文件:rsvars.bat
默认安装目录:C:\Program Files (x86)\Embarcadero\Studio\22.0\bin

如果要在命令行中使用MSBuild而不使用RAD Studio命令提示符,则应自行设置以下环境变量:

# 以下环境变量是在win11下的Delphi 11.2的,不同的版本目录稍有不同    
BDS=C:\Program Files (x86)\Embarcadero\Studio\22.0
FrameworkDir=C:\Windows\Microsoft.NET\Framework\v4.0.30319
FrameworkVersion=v4.5
三、自定义生成构建配置

Project>Options 对话框的多个页面允许将选项组保存到命名的构建配置中。两个默认的生成配置是“Debug”和“Release”。您可以使用Configuration Manager选择性地应用任何命名的生成配置作为项目或项目组的活动配置。

注:
活动配置表示当前构建的配置,例如如果是Debug,则生成的是Debug版本!
四、设置构建事件并查看构建输出

构建项目时,生成结果将显示在“Output”选项卡上的“Message”窗口中。您可以使用Project > Options > Build Events对话框指定预生成和后生成事件(C++Builder也支持预链接事件)。如果指定生成事件,则指定的命令及其结果也会显示在“Message”窗口中。

五、文件类型确定生成顺序

MSBuild按照以下顺序构建项目:

序号

文件类型

1

.RC files

2

.ASM files

3

.PAS files

4

.CPP files

构建将通过项目管理器中的目录或文件夹节点向下进行。在每个文件夹中,根据文件类型按顺序构建文件。可以通过在“Projects”窗口中的不同文件夹或虚拟文件夹中放置文件来控制生成顺序。

msbuild命令,Delphi,msbuild,Delphi 命令行,msbuild Delphi,Powered by 金山文档
六、MSBuild命令行构建

可以使用MSBuild命令行语法直接构建项目,具体语法如下:

MSBuild <projectname> [/t:<target name>][/p:config=<configuration_name>][target:Deploy][/p:platform=<platform_node_name>]
    • 使用命令行构建项目
  1. 从“开始”菜单中,选择Embarcadero RAD Studio | RAD Studio Command Prompt。命令提示符窗口自动设置使用RAD Studio工具(如MSBuild.exe)的环境。

注意:
在较新版本的Windows操作系统中,快捷方式将出现在应用程序列表菜单中。
  1. 打开包含项目的目录,例如C:\Users\<user>\Documents\Embarcadero\Studio\Projects\MyProject

  1. 在命令行输入msbuild,不要回车。

  1. 输入项目名称,例如TelePoll.dproj(Delphi项目)或UserInfo.cbproj(C++项目)。如果项目不在当前目录中,则必须包含项目目录的完整路径名。

  1. 要指定目标,请输入 /t: 标记,后跟项目文件中指定的目标之一。三个标准目标名称是cleanmakebuild

序号

标记

说明

1

clean

clean意味着清理项目,删除生成的文件,例如对象代码。clean 对应于“项目管理器”上下文菜单项“Clean”。

2

make

编译项目的方法。make对应于上下文菜单项Compile

3

build

build意味着构建项目。build 对应于上下文菜单项“Build”。这三个目标类似于项目管理器上下文菜单上的“Clean”、“Compile”和“Build”命令。默认目标是build

  1. 若要指定配置,请在 /p:Configuration= 之后输入配置名称。如果未指定配置,MSBuild将使用当前活动配置。若要指定一个配置,请使用项目中某个现有生成配置的名称。这可以是默认配置(如Debug),也可以是添加到项目中的配置。如果配置名称中有空格,请输入由双引号限定的名称,例如:/p:Configuration=“My config”。

  1. 要准备部署应用程序,请添加 /target:Deploy 选项。

  1. 如有任何其他选项,请输入,然后按Return(回车)开始构建。

提示:
要显示MSBuild的联机帮助(包括完整的示例命令行),请在命令行提示符输入 MSBuild /help
更多关于MSBuild的帮助,参见微软文档: http://msdn.microsoft.com/default.aspx
    • 命令行构建android和ios项目

创建apk或ipa包文件需要*.deployproj文件。此文件仅从IDE生成。每次在部署管理器中进行更改以更新*.deployproj文件时,都需要从IDE部署应用程序。单击Deploy 图标以再次创建文件。

  1. IDE中的步骤:

  1. 在项目窗口中选择项目的选项:构建Configurations和PlatForms平台。

  1. Compile 编译项目。

  1. 选择 Project > Deployment 并且按下 Deploy 图标(注意:这将生成一个与MSBuild一起使用的*.deployproj文件)。

  1. 保存项目。

  1. MSBuild步骤:

根据MSBuild命令行构建命令指定目标平台:

msbuild <project_name> ... /p:platform=Android / iOSDevice64
    • 举例

以下MSBuild命令示例:

要创建.apk安装程序以项目部署到Android目标平台,请使用与以下语法类似的命令:

msbuild MyApps_CBuilder.cbproj /t:Build /p:Configuration=Debug /target:Deploy /p:platform=Android

要将Delphi项目部署到iOS64目标平台,请使用与以下语法类似的命令:

msbuild MyProj_Delphi.dproj /t:Build /p:Configuration=Debug /target:Deploy /p:platform=iOSDevice64
    • 附录:MSBuild 详细命令帮助
PS C:\Users\wuxihong> msbuild /help
Microsoft(R) 生成引擎版本 4.8.9032.0
[Microsoft .NET Framework 版本 4.0.30319.42000]
版权所有 (C) Microsoft Corporation。保留所有权利。

语法:              MSBuild.exe [选项] [项目文件]

描述:          在项目文件中生成指定的目标。如果
                     未指定项目文件,MSBuild 将搜索
                     当前工作目录来查找文件扩展名
                     以“proj”结尾的文件并使用该文件。

开关:

  /target:<targets>  在此项目中生成这些目标。使用
                     分号或逗号分隔多个目标,或者分别指定
                     每个目标。(缩写: /t)
                     示例:
                       /target:Resources;Compile

  /property:<n>=<v>  设置或重写这些项目级属性。<n> 是
                     属性名,<v> 为属性值。请使用
                     分号或逗号分隔多个属性,或者
                     分别指定每个属性。(缩写: /p)
                     示例:
                       /property:WarningLevel=2;OutDir=bin\Debug\

  /maxcpucount[:n]   指定用于生成的最大
                     并发进程数。如果未使用开关,则使用的默认值
                     为 1。如果使用开关时不带值,
                     MSBuild 将最多使用计算机上的
                     处理器数。(缩写: /m[:n])

  /toolsversion:<version>
                     要在生成过程中使用的 MSBuild 工具集
                     (任务、目标等) 的版本。此版本将重写
                     个别项目指定的版本。(缩写:
                     /tv)
                     示例:
                       /toolsversion:3.5

  /verbosity:<level> 在事件日志中显示此级别的信息量。
                     可用的详细级别有: q[uiet]、 m[inimal]、
                     n[ormal]、d[etailed] 和 diag[nostic]。(缩写: /v)
                     示例:
                       /verbosity:quiet

  /consoleloggerparameters:<parameters>
                     控制台记录器的参数。(缩写: /clp)
                     可用的参数有:
                        PerformanceSummary -- 显示在任务、目标和项目上
                            花费的时间。
                        Summary -- 结束时显示错误和警告的摘要。
                        NoSummary -- 结束时不显示错误和警告
                            的摘要。
                        ErrorsOnly -- 仅显示错误。
                        WarningsOnly -- 仅显示警告。
                        NoItemAndPropertyList -- 在开始生成每个项目时不显示
                            项和属性的列表。
                        ShowCommandLine -- 显示 TaskCommandLineEvent 消息
                        ShowTimestamp -- 将时间戳作为所有消息的前缀
                            显示。
                        ShowEventId -- 显示已开始事件、已完成事件和消息
                            的事件 ID。
                        ForceNoAlign -- 不将文本与控制台缓冲区的大小
                            匹配。
                        DisableConsoleColor -- 将默认控制台颜色
                            用于所有记录消息。
                        DisableMPLogging -- 在非多处理器
                            模式下运行时,禁用输出的多处理器
                            日志记录样式。
                        EnableMPLogging -- 即使在非多处理器
                            模式下运行,也启用多处理器
                            日志记录样式。默认情况下启用此日志记录样式。
                        Verbosity -- 重写此记录器的  /verbosity
                            设置。
                     示例:
                        /consoleloggerparameters:PerformanceSummary;NoSummary;
                                                 Verbosity=minimal

  /noconsolelogger   禁用默认控制台记录器,并且不将事件
                     记录到控制台。(缩写: /noconlog)

  /fileLogger[n]     将生成输出记录到文件中。默认情况下,
                     该文件在当前目录中,名称为
                     “msbuild[n].log”。所有节点中的事件合并到
                     单个日志中。fileLogger 的文件和
                     其他参数的位置可以通过添加
                     “/fileLoggerParameters[n]”开关来指定。
                     “n”(如果存在)可以为 1-9 的数字,允许最多附加
                     10 个文件记录器。(缩写: /fl[n])

  /fileloggerparameters[n]:<parameters>
                     为文件记录器提供任何额外的参数。
                     存在此开关意味着
                     存在对应的 /filelogger[n] 开关。
                    “n”(如果存在)可以为 1-9 的数字。
                     任何分布式文件记录器也可以使用
                     /fileloggerparameters,具体可参阅 /distributedFileLogger 的说明。
                     (缩写: /flp[n])
                     为控制台记录器列出的相同参数
                     可用。某些其他可用参数有:
                        LogFile -- 生成日志将写入其中的
                            日志文件的路径。
                        Append -- 确定是将生成日志附加到日志文件,
                            还是覆盖日志文件。如果设置此
                            开关,则会将生成日志附加到日志文件;
                            如果不设置此开关,则会覆盖
                            现有日志文件的内容。
                            默认值为不附加到日志文件。
                        Encoding -- 指定文件的编码,
                            例如,UTF-8、Unicode 或 ASCII
                     默认的详细级别为 Detailed。
                     示例:
                       /fileLoggerParameters:LogFile=MyLog.log;Append;
                                           Verbosity=diagnostic;Encoding=UTF-8

                       /flp:Summary;Verbosity=minimal;LogFile=msbuild.sum
                       /flp1:warningsonly;logfile=msbuild.wrn
                       /flp2:errorsonly;logfile=msbuild.err

  /distributedlogger:<central logger>*<forwarding logger>
                     使用此记录器来记录 MSBuild 中的事件,向每个节点
                     附加不同的记录器实例。若要指定
                     多个记录器,请分别指定每个记录器。
                     (缩写 /dl)
                     <logger> 语法为:
                       [<logger class>,]<logger assembly>[;<logger parameters>]
                     <logger class> 语法为:
                       [<partial or full namespace>.]<logger class name>
                     <logger assembly> 语法为:
                       {<assembly name>[,<strong name>] | <assembly file>}
                     <logger parameters> 是可选的,并且按键入的
                     形式原样传递给记录器。(缩写: /l)
                     示例:
                       /dl:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
                       /dl:MyLogger,C:\My.dll*ForwardingLogger,C:\Logger.dll

  /distributedFileLogger
                     将生成输出记录到多个日志文件,每个 MSBuild 节点
                     一个日志文件。这些文件的初始位置为
                     当前目录。默认情况下,这些文件名为
                     “MSBuild<nodeid>.log”。可通过添加
                     “/fileLoggerParameters”开关来指定
                     这些文件的位置和 fileLogger 的其他参数。

                     如果日志文件名是通过 fileLoggerParameters
                     开关设置的,分布式记录器将使用 fileName 作为
                     模板并将节点 ID 附加到此 fileName
                     以便为每个节点创建一个日志文件。

  /logger:<logger>   使用此记录器来记录 MSBuild 中的事件。若要指定
                     多个记录器,请分别指定每个记录器。
                     <logger> 语法为:
                       [<logger class>,]<logger assembly>[;<logger parameters>]
                    <logger class> 语法为:
                        [<partial or full namespace>.]<logger class name>
                   <logger assembly> 语法为:
                        {<assembly name>[,<strong name>] | <assembly file>}
                     <logger parameters> 是可选的,并按键入的
                    形式原样传递给记录器。(缩写: /l)
                     示例:
                       /logger:XMLLogger,MyLogger,Version=1.0.2,Culture=neutral
                       /logger:XMLLogger,C:\Loggers\MyLogger.dll;OutputAsHTML

  /validate          依据默认架构验证项目。(缩写:
                     /val)

  /validate:<schema> 依据指定的架构验证项目。 (缩写:
                     /val)
                     示例:
                       /validate:MyExtendedBuildSchema.xsd

  /ignoreprojectextensions:<扩展名>
                     确定要生成的项目文件时要忽略的
                     扩展名的列表。使用分号或逗号来分隔
                     多个扩展名。
                     (缩写: /ignore)
                     示例:
                       /ignoreprojectextensions:.sln

  /nodeReuse:<parameters>
                     允许或禁止重复使用 MSBuild 节点。
                     参数包括:
                     True -- 生成完成后节点将保留,
                             并且将由后面的生成重复使用(默认)
                     False -- 生成完成后节点将不会保留
                     (缩写: /nr)
                     示例:
                       /nr:true

  /preprocess[:file]
                     通过嵌入将在生成过程中导入的
                     所有文件并标记其边界,
                     创建一个聚合的项目文件。这对于
                     了解导入什么文件、从何处导入以及
                     这些文件在生成中的构成
                     非常有用。默认情况下,输出将写入
                     控制台窗口。如果提供输出文件的路径,
                     则将改用该路径。
                     (缩写: /pp)
                      示例:
                       /pp:out.txt

  /detailedsummary
                     在生成的结尾显示有关
                     所生成的配置以及如何向节点安排
                     这些配置的详细信息。
                     (缩写: /ds)

  @<file>            从文本文件插入命令行设置。若要指定
                     多个响应文件,请分别指定每个响应
                     文件。

                     自动从以下位置使用任何
                     名为“msbuild.rsp”的响应文件:
                     (1) msbuild.exe 的目录
                     (2) 生成的第一个项目或解决方案的目录

  /noautoresponse    不自动包括任何 MSBuild.rsp 文件。(缩写:
                     /noautorsp)

  /nologo            不显示启动版权标志和版权消息。

  /version           仅显示版本信息。(缩写: /ver)

  /help              显示此用法消息。(缩写: /? 或 /h)

示例:

        MSBuild MyApp.sln /t:Rebuild /p:Configuration=Release
        MSBuild MyApp.csproj /t:Clean
                             /p:Configuration=Debug;TargetFrameworkVersion=v3.5

全文完。

今天是大年初五,五福临门!文章来源地址https://www.toymoban.com/news/detail-791662.html

到了这里,关于MSBuild 命令行编译Delphi的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安装支持vs2019的MFC(解决MSBuild 错误 MSB8041、MSB8042)

    安装上述勾选内容后,即可解决MSBuild 错误 MSB8041 MSB8041:此项目需要 MFC/ATL 库。 https://learn.microsoft.com/zh-cn/visualstudio/msbuild/errors/msb8041?view=vs-2022 参考链接:https://blog.csdn.net/sanqiuai/article/details/124181979

    2024年02月15日
    浏览(39)
  • *Unity程序报错“缺少根元素msbuild\current\bin\microsoft.common.currentversion.targets“

    找到ImportAfter目录将其内文件全部删除即可解决问题 /*增爆 Rigidbody2D rigidbody2d;     Animator animator;     Bot_Ctrl2 Bot_Ctrl2;     App_Ctrl app_Ctrl;     Throwing_Knife_Ctrl throwing_Knife_Ctrl;     public GameObject projectilePrefab;     public ParticleSystem EatEffect;     //public ParticleSystem Strat;     Vector2 L

    2023年04月08日
    浏览(29)
  • Discuz论坛网站标题栏Powered by Discuz!版权信息如何去除或是修改?

    当我们搭建好DZ论坛网站后,为了美化网站,想把标题栏的Powered by Discuz!去除或是修改,应该如何操作呢?今天飞飞和你分享,在操作前务必把网站源码和数据库都备份到本地或是网盘。   Discuz的版权信息存在两处地方,一个是标题栏,一个是底部。一般为了美化修改个标

    2024年02月08日
    浏览(59)
  • (C#) IIS 响应标头过滤敏感信息(如:Server/X-Powered-By等) 运维知识

    再一次净网行动中,客户要求安全改造发现了接口请求的header标头中出现如图中的敏感信息。   其意义在于告知浏网站是用什么语言或者框架编写的。解决办法就是修改该响应头为一个错误的值,将攻击者导向一个错误的方向。 这里只说windows 的iis环境,不考虑其他服务器的

    2024年02月11日
    浏览(52)
  • AI Powered SLS 智能分析能力创新

    随着云计算技术不断升级,承载业务的 IT 基础设施规模扩大,各个应用之间的链路关系变得越来越复杂,每时每刻都在产生海量级的日志。对日志数据的采集、存储与分析处理方式,是衡量企业系统数字化程度的重要标志。传统的 IT 运维方案也会面临非常大的挑战,对于

    2024年02月03日
    浏览(29)
  • Enhance PDF Management with ChatGPT Powered AI

    January 16, 2024 IronPDF for .NET 2024.1.20 adds support for OpenAI extensions, allowing you to create PDF documents with the help of artificial intelligence. IronPDF for .NET empowers developers with a user-friendly C# library to generate, edit, and manage PDFs. It leverages a familiar HTML/CSS foundation for effortless PDF creation, while also offering rob

    2024年01月22日
    浏览(33)
  • OpenAI 的 AI 安全负责人:LLM 支持的自主代理 LLM Powered Autonomous Agents

    目录 LLM 支持的自主代理 Agent System Overview 代理系统概述 Planning 规划 Memory 记忆 Tool use 工具使用

    2024年02月09日
    浏览(33)
  • Gradle编译时报错 Caused by: javax.net.ssl.SSLException: No PSK available. Unable to resume.

    Gradle编译时报错 Caused by: javax.net.ssl.SSLException: No PSK available. Unable to resume. 这是 JDK 11 的一个bug, 升级到 JDK 11.0.3+ 可以解决 bug: https://bugs.openjdk.java.net/browse/JDK-8213202 不想升级的话可以手动修改 $JAVA_HOME/conf/security/java.security 文件, 找到 jdk.tls.disabledAlgorithms=SSLv3 所在的那一行,在行

    2024年02月12日
    浏览(68)
  • Android-Studio编译不过提示caused by: org.gradle.api.internal.plugins.PluginApplicationException: Failed t错

    根据搜索在Gradle Scripts的gradle.properties中添加以下语句  android.overridePathCheck=true 但是问题没有得到解决,搜索了很多方法不行,最后想到是不是Android-studio版本太高问题,我用的是2023.2.3版本 ,根据下载代码的时间降到2021.2.1版本问题最终解决。  不断尝试,就会有不一样的收

    2024年02月04日
    浏览(41)
  • 安装pinia后编译项目报错“hasInjectionContext“ is not exported by “node_modules/vue-demi/lib/index.mjs“

    uniapp安装pinia时,编译项目报错\\\"hasInjectionContext\\\" is not exported by \\\"node_modules/vue-demi/lib/index.mjs\\\", imported by \\\"node_modules/pinia/dist/pinia.mjs\\\". 解决方法:将pinia的版本改成2.0.36,重新编译,就不报错了

    2024年04月14日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包