MSBuild 命令行编译Delphi

news2024/11/28 14:49:40

为了构建项目,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命令行构建

可以使用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

全文完。

今天是大年初五,五福临门!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[GWCTF 2019]枯燥的抽奖

目录 信息收集 知识回顾 解题思路 信息收集 查看源码&#xff0c;发现check.php <?php #这不是抽奖程序的源代码&#xff01;不许看&#xff01; header("Content-Type: text/html;charsetutf-8"); session_start(); if(!isset($_SESSION[seed])){ $_SESSIO…

html表格

1.基本标签 标签名说明table表示整体&#xff0c;用于包裹多个trtr表格每行&#xff0c;用于包裹tdtd表格单元格&#xff0c;用于包裹内容 注意点&#xff1a; 表格嵌套关系&#xff1a;table>tr>td 表格table的常见属性&#xff1a; 修饰table属性的标签 需要写道tab…

【FA-GAN:超分辨率MRI图像】

FA-GAN: Fused attentive generative adversarial networks for MRI image super-resolution &#xff08;FA-GAN&#xff1a;融合注意生成对抗网络的MRI图像超分辨率&#xff09; 高分辨率磁共振图像可以提供细粒度的解剖信息&#xff0c;但是获取这样的数据需要长的扫描时间…

UVA11426 - GCD - Extreme (II)(数论,欧拉函数)

题目链接&#xff1a;GCD - Extreme (II) - UVA 11426 - Virtual Judge (vjudge.net)​​​​​ 题意 给一个数N&#xff0c;求&#xff1a; ​​​​​​​ 其中&#xff0c;多组输入&#xff0c;输入以0结束&#xff0c;保证答案在long long范围内。 思路 很好的一道题…

移动web主轴设置和flex总结

移动web主轴设置和flex总结设置主轴方向修改主轴经常的使用场景&#xff1a;弹性盒子换行设置侧轴对齐方式flex 总结梳理主轴排列方式侧轴对齐方式-单行对齐侧轴对齐方式-多行弹性盒子换行设置主轴方向伸缩比设置主轴方向 主轴默认是水平方向, 侧轴默认是垂直方向 修改主轴方…

Linux常用命令——semanage命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) semanage 默认目录的安全上下文查询与修改 补充说明 semanage命令是用来查询与修改SELinux默认目录的安全上下文。SELinux的策略与规则管理相关命令&#xff1a;seinfo命令、sesearch命令、getsebool命令、set…

天地图矢量注记图坑

http://lbs.tianditu.gov.cn/server/MapService.html瓦片图案例见下文&#xff0c;注意其中的LAYER:&#xff0c;记住口诀&#xff0c;地址里用什么&#xff0c;这个layer就用什么。比如影像注记里&#xff0c;地址用了cia_w&#xff0c;那么这个layer后面必须是cia_w&#xff…

别总写代码,这130个网站比涨工资都重要

今天推荐一些学习资源给大家&#xff0c;当然大家可以留言评论自己发现的优秀资源地址 搞学习 找书籍 冷知识 / 黑科技 写代码 资源搜索 小工具 导航页&#xff08;工具集&#xff09; 看视频 学设计 搞文档 找图片 搞学习 TED&#xff08;最优质的演讲&#xff09;&#xff1…

解析JVM类加载器

文章目录1、何为类加载器2、三层类加载器3、双亲委派模型参考资料&#xff1a;《深入理解Java虚拟机》 1、何为类加载器 类加载过程中&#xff0c;加载阶段第一步操作就是通过一个类的全限定名获取此类的二进制字节流。实现这个动作的代码就是类加载器。 任意一个类都必须由加…

mybatis-plus1(前言技术)

目录 一、Mybatis-plus入门 1.什么是mybatis-plus 2.初体验 ① 准备数据库脚本 ② 初始化工程 ③ 编码 ④ 开始使用 3.日志 二、Mybatis-plus主键生成策略 1.更新 三、Mybatis-plus自动填充 1&#xff1a;通过数据库完成自动填充 2&#xff1a;使用程序完成自…

gensim中的word2vec使用

介绍 一句话&#xff0c;GensimGensimGensim中的word2vec类就是用来训练词向量的&#xff0c;这个类实现了词向量训练的两种基本模型skip−gramskip-gramskip−gram和CBOWCBOWCBOW,可以通过后面的参数设置来选择&#xff0c;。但是&#xff0c;在Gensim这个模块中训练词向量的…

什么是盒子模型?

什么是盒子模型&#xff1f; 盒子模型组成有 4 部分,分别为:内容 内边距 外边距(一般不计入盒子实际宽度) 边框 盒子模型有 2 种:标准盒子模型与怪异盒子模型 标准盒子模型content(内容)border(边框)padding(内边距) 怪异盒子模型content(内容)(已经包含了 padding 和 border) …

随手查——Lumerical

Lumerical小白学习的一些记录&#xff0c;以防自己忘记&#xff0c;持续更。。。 快速导航1、如何设置网格2、关于窗口的一些操作&#xff08;1&#xff09;窗口的最大化与复原&#xff08;2&#xff09;窗口的关闭与开启1、如何设置网格 【View】→【Drawing grid】→【Edit …

ctfshow代码审计篇

文章目录web301-SQL注入web302- sql写shellweb303- insertweb304- 报错注入web305- 反序列化蚁剑连接数据库web306- 反序列化web307- shell_exce()web308- ssrf打mysqlweb309- ssrf打fastcgiweb310- ssrffastcfgi写shellweb301-SQL注入 check.php $username$_POST[userid]; $u…

php实现短链接系统

依据第二种算法&#xff0c;URL长连接转短连接实现方法如下&#xff1a; 语言&#xff1a;PHP5.6 服务器环境&#xff1a;LNMP 假设&#xff1a;长连接地址&#xff1a;http://www.test.com/index.php 短连接地址&#xff1a;http://t.test.com/六位code码 第一步&#xff…

Ubuntu18上安装搜狗输入法

一、说明 在ubuntu上安装中文输入法会经常遇到问题。本文是作者经过历次艰苦卓绝的努力后&#xff0c;安装成功的总结。这里稍作记录&#xff0c;以便日后安装时查询。 二、版本选择 注意&#xff1a;目前的搜狗和ubuntu版本是有个配套问题&#xff0c;如下表所列&#xff1a; …

【Typescript学习】使用 React 和 TypeScript 构建web应用(一)预览成品、初始化react项目、常见类型

教程来自freecodeCamp&#xff1a;【英字】使用 React 和 TypeScript 构建应用程序 跟做&#xff0c;仅记录用 其他资料&#xff1a;https://www.freecodecamp.org/chinese/news/learn-typescript-beginners-guide/ 第一天 1 学习目标&#xff08;我个人的&#xff09; 入门 …

开启前端CSS学习之路-css001

&#x1f60a;博主页面&#xff1a;鱿年年 &#x1f449;博主推荐专栏&#xff1a;《WEB前端》&#x1f448; ​&#x1f493;博主格言&#xff1a;追风赶月莫停留&#xff0c;平芜尽处是春山❤️ 目录 前言 一、CSS简介 1.HTML的局限性 2.CSS-网页美容师 3.CSS语法规范…

ccflow 代码

java 工作流的开发框架目录概述需求&#xff1a;设计思路实现思路分析1.工作流参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge S…

十大常见排序算法(java编写)

日升时奋斗&#xff0c;日落时自省 目录 1、插入排序 2、希尔排序 3、选择排序 4、堆排序 5、冒泡排序 6、快速排序 6.1、Hoare法找基准值 6.2、挖坑法找基准值 6.3、快慢指针找中间值 6.4、优化 6.5、非递归排序 7、归并排序 7.1、递归实现 7.2、非递归实现 7.…