已关闭。此问题需要更多focused。目前不接受回答。
**要改进此问题吗?**更新此问题,使其仅针对editing this post的一个问题。
上个月关门了。
Improve this question的
我想执行一个全新的构建所有内置的图书馆来预装 Delphi 11.3 Alexandria 。
我已经注意到似乎是构建RTL的Program Files (x86)\Embarcadero\Studio\22.0\source\rtl\buildrtl.bat
文件。不幸的是,这个.bat
文件假设您可以访问命令行 Delphi 编译器,它不是 Delphi 社区版的一部分。而且,这是我能为 Delphi 找到的唯一.bat
构建文件,我想为所有内置的 Delphi 库执行构建,这些库似乎位于Program Files (x86)\Embarcadero\Studio\22.0\source
中,并命名为:
data
databinding
DataExplorer
DunitX
FlatBox2D
fmx
indy
Indy10
internet
Property Editors
rtl
soap
tethering
ToolsAPI
vcl
Visualizers
xml
字符串
到目前为止我尝试过的事情:
1.我尝试创建一个单独的 Delphi 应用程序,制作一个单独的Program Files (x86)\Embarcadero\Studio\22.0\source
文件夹副本并将其放置在应用程序的源代码文件夹中,将此source
文件夹副本添加到我的项目中,然后构建应用程序。这似乎不起作用,因为我试图在一个应用程序中编译太多文件。当编译这么多文件时,基于IDE的编译器似乎失败了。根据我在互联网上读到的,编译这么多文件只有当你启用使用MSBuild.exe
来执行构建时才有效,这对我来说不起作用,因为 Delphi 的社区版不允许你使用 Delphi 命令行编译器,而MSBuild.exe
依赖于它。
1.我尝试为每个库创建单独的 Delphi 应用程序,制作Program Files (x86)\Embarcadero\Studio\22.0\source\LIBRARY-NAME
文件夹的单独副本并将其放置在应用程序的源代码文件夹中,将source\LIBRARY-NAME
文件夹的副本添加到我的项目中,并构建应用程序。但是到目前为止,只有databinding
和FlatBox2D
库允许我成功地以这种方式构建它们。我通常遇到麻烦,因为 Delphi 库引用了很多驻留在其他文件夹中的文件。所以,我正在根据需要慢慢添加这些文件,但有时它们不存在,例如,一些.ICO
文件(然后我注解掉),一些包含某些 Delphi 类的文件(这对我来说是一个更大的问题)等。
请注意:
1.我使用的是 Delphi 11.3 Alexandria 社区版。
1.我安装了所有的平台,即Windows,macOS,iOS和Android,当试图构建库时。
1.我未能安装所有“可选”项目:TeeChart标准,DUnit单元测试框架,InterBase Express(IBX)组件,InterBase 2020开发者版,Android SDK 25.2.5 - NDI r21,Eclipse Temurin OpenJDK 11(Hotspot)JVM)。我现在正在安装它们,一旦安装完毕,将尝试再次构建库。
问题:
1.有没有一个更好的方法来处理我正在做的事情?
1.是否有一个现有的项目(我无法通过Google找到)提供了一种方便的方法来构建内置库?我发现了一些讨论如何手动完成的网页(我试图遵循),但它们总是不完整的,并且适用于非常旧的 Delphi 版本。
1.我是否需要使用 Delphi 的Professional、Enterprise或Architect版本而不是Community版本?
1.如果我使用的是 Delphi 的Professional、Enterprise或Architect版本而不是Community版本,那么这些版本会附带不属于Community版本的其他内置库吗?
1条答案
按热度按时间5us2dqdw1#
首先,你需要明白, Delphi 确实附带了一些源代码,即使你有 Delphi 的架构师版本,源代码也不完整。
第二件你需要明白的事情是,这个源代码的目的不是让你自己编译它,而是让你更好地理解一些组件和库的内部是如何工作的。知道这一点可以让你更容易地扩展这些代码。
第三件事你需要明白的是,当你编译你的应用程序时,这些源文件并不是每次都被重新编译。相反, Delphi 是链接一堆预编译的单元和包,你可以在
C:\Program Files (x86)\Embarcadero\Studio\22.0\lib
文件夹及其目录中找到。这就是为什么 Delphi 可以如此快速地构建一个最终的应用程序,因为它基本上只是链接已经编译的代码的部分,而不像大多数其他编程语言缺点是最终编译和链接的代码不像其他编程语言那样优化。最后,其中一些单元或软件包可能需要自定义编译参数才能正确编译。但Embarcadero不会与公众共享此类信息。
无论如何,在大多数情况下,你没有理由自己编译这些文件中的任何一个。唯一的原因是,如果Embarcadero代码中有一些bug,你不能等待下一个版本来修复它,那么你可能想要重新编译这些文件。