原文:http://www.cnblogs.com/lucifer1982/archive/2008/11/26/1341620.html
近日有朋友问及如何编译和使用 D-Phoenix 库。于是就有了这篇文章的存在。
这个年代,没有 IDE 进行编码编译是痛苦的。所以,博主将主要介绍使用 Poseidon 来编译 D-Phoenix 库(为啥子要讲 Poseidon,而不是 CodeBlocks 之类的 IDE。哈,因为 Poseidon 是国产货)。
首先,D 语言编译器是必备武器。D-Phoenix 库推荐使用 DMD 2.019 for Win32编译器。你可以按照下面的方法安置好 D 语言编译器:
* 从 http://ftp.digitalmars.com/dmc.zip 处获得 DMC Linker & Utilities for Win32,并解压缩到 C:\ 根目录下。
* 从 http://ftp.digitalmars.com/dmd.2.019.zip 处获得 DMD 2.019 编译器,并解压缩到 C:\ 根目录下。
然后,从 http://www.dsource.org/projects/poseidon/changeset/head/trunk?old_path=%2F&format=zip 处获得最新版 Poseidon IDE。
接下来,在你指定的位置新建文件夹 d-phoenix 。然后从 http://d-phoenix.googlecode.com/files/Phoenix%20v0.5.1.zip 处下载 D-Phoenix 源码,并解压缩到刚才新建的 d-phoenix 目录下。当然,你也可以从 http://d-phoenix.googlecode.com/svn/trunk/ 处使用 SVN 检出。如图 1 所示:
SVN Check Out 图1 SVN 检出示意图
检出完毕之后,可以如图 2 所示的目录结构:
Directory 图2 D-Phoenix 目录示意图
这时,打开刚才下载的 Poseidon IDE,从 File 菜单下选择 New Project,这时会弹出 Project Property 窗口。如图 3 所示:
Project Property 图3 项目属性窗口
现在开始设置项目属性:
* 在 Load Style 上,选择 By Project Path。
* 在 Project Name 上填写 D-Phoenix。
* 在 Project Path 上选择我们刚刚的 d-phoenix\source 目录。
* 在 Type 上选择 Static Library。其实这里选择什么都无所谓,因为编译时不会用到这个选项,后面会讲到。
* 其他选项,我们不用去管。
设置好之后,你会看到如图 4 所示的结果:
Project Result 图4 项目属性设置
这样,就创建了 D-Phoenix 项目。但是,你会看到里面并没有文件。这需要我们自己动手把项目中的文件按照目录层次一一添加过来。建立项目以后,就不需要这么繁琐了。在 Source 下添加完文件之后,会看到如图 5 所示的结果:
Source 图5 源码层次结构示意图
这样,D-Phoenix 库项目就建立好了。接下来开始编译项目。这里需要说明的是,我们不使用 Poseidon IDE 自带的编译选择。而是使用外部工具自己编写 DMD 编译器编译指令。
首先,选择 Poseidon 工具栏上的如图 6 所示的小图标:
Tool 图6 外部工具图标
点击这个图标旁边的下拉按钮,选择 Customize… 。这时弹出 External Tool Configuration 窗口。删除所有的外部工具,我们重新添加所需要的工具。点击 Add 按钮,按照如下方式配置该工具:
*
在 Name 上,填写 DMD (Debug + UnitTest) - Static Library。这意味着我们正在使用 DMD 编译器生成 debug 模式下的静态库,而且在编译过程中,会自动进行单元测试。
*
在 Command 上,填写 DMD 编译器所在的位置。按照如上所述,这里应当是 C:\dmd\bin\dmd.exe 。
*
在 Arguments 上,填写 $(ProjectAll) -lib -g -c -unittest -debug -ofPhoenix.lib 。
*
在 Intial Dir 上,填写 $(ProjectDir) 。
*
分别选中 Capture Output,Hide Window,Save Files First 。
设置完成后,如图 7 所示:
Debug Static Library 图7 配置 DMD 编译器
同理,我们可以配置 release 模式的静态库 DMD 编译命令和在控制台输出的 debug 模式 DMD 编译命令。分别如图 8 和图 9 所示:
Release Static Library 图8 配置 DMD 编译器
Console 图9 配置 DMD 编译器
现在是时候编译 D-Phoenix 库了。我们选择 DMD (Debug + UnitTest) - Static Library 工具编译一下,看能不能成功。如果成功,你会在 d-phoenix\source 目录下看到生成的 Phoenix.lib 静态库,这是 Debug 版的静态库。如果不成功,编译器会报错,这就需要你仔细排查了。你还可以试试其他编译模式,祝你成功,:) 。图 10 是在 release 模式下编译的 Phoenix.lib 截图:
Phoenix 图10 在 release 模式下的 Phoenix.lib
到这一步,已经大功告成。接下来,我来简单的说下如何使用 D-Phoenix 提供的 API,更详细的信息可以参考 API 文档或者查看单元测试代码。
比如大家都很常用的可扩展数组(指的是泛型版)。JDK 提供的是 ArrayList<T>,.NET 提供的是 List<T>,STL 提供的是 vector<T>。在 D-Phoenix 库中提供的可扩展数组是 ArrayList(T),它位于 system.collections.ArrayList 模块中。下面是示例代码(其实是从单元测试里拷贝过来的,呵呵):
//test insert()
auto stringList = new ArrayList!(string)();
with(stringList)
{
insert(0, "a");
insert(0, "b");
insert(1, "c");
}
assert( stringList.count == 3 );
assert( stringList[0] == "b" );
assert( stringList[1] == "c" );
assert( stringList[2] == "a" );
auto array = [55,50,22,80,56,52,40,63];
auto list = new ArrayList!(int)(8);
foreach( i; array )
{
list.add(i);
}
//test insertRange()
auto count = list.count;
auto newArray = [1,2,3];
auto newRange = new ArrayList!(int)(3);
foreach(i; newArray)
{
newRange.add(i);
}
list.insertRange(1, newRange);
assert( count+3 == list.count );
assert( list[0] == 55 );
assert( list[1] == 1 );
assert( list[2] == 2 );
assert( list[3] == 3 );
assert( list[4] == 50 );
Well,就到这里吧。嗯,就到这里。
分享到:
相关推荐
Ajax-jquery.poseidon.zip,支持轮询的轻量级jquery ajax插件,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页...
** Poseidon-v0.221-bin:D IDE详解** Poseidon-v0.221-bin是一款专为D编程语言设计的集成开发环境(IDE),它以其简洁易用的特性深受用户喜爱。在当前的软件开发领域,D语言虽然不像Java、Python那样普及,但凭借...
7. **文档查看**:Poseidon可能支持查看D语言标准库和其他库的文档,以便于理解和使用库函数。 8. **模板支持**:提供预定义的代码模板,简化常见任务的编码工作。 9. **多平台支持**:由于D语言本身的跨平台性,...
在日志处理库方面,Poseidon可能采用了如logrus、zerolog等流行的Go日志库,它们提供了结构化日志记录,便于数据解析和后期分析。结构化的日志数据不仅方便检索,还能更好地支持数据可视化和报表生成。此外,...
D 语言 IDE Poseidon Editor for D rev.272 其实应该说只是一个编辑器, D语言是个杂交语言,如果你学习过N多语言,那么你看D语言中会很看很多你学习...D语言是编译的,Poseidon 是给D用的。。也可以用过其它的编辑器
Poseidon 是一个用户友好的水系统,支持创建壮观的水景,高度关注低多边形和风格化世界,可以在 PC 端、移动端和 VR 设备上流畅运行,省时省力! Poseidon 是第一个完全支持通用和内置渲染管线的系统,具有多种可以...
Poseidon 的设计注重三个核心价值:优化性能、高度可定制和专业的客户服务。这些价值确保了开发者能够快速实现高质量的水体效果,同时保持游戏的流畅运行和高度的个性化。 核心特性 易于学习和使用 Poseidon 提供了...
组织结构Poseidon├── psd-config -- 通用配置├── psd-discovery -- Eureka注册中心├── psd-elastic-search -- 基于Elasticsearch的商品搜索,推荐服务├── psd-gateway -- 网关服务├── psd-generate -...
Ajax-poseidon.zip,波塞冬网络键盘记录器,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新加载网页的情况下更改。
我们的实验室正在努力提高网络训练集的可用性,但是在短期内,该项目仍将重点放在1)提高识别节点IS的准确性(基于捕获的IP标头数据)和2)将Poseidon开发为“利用”以容纳其他使用案例的机器学习技术。 (阅读:...
文件名:Low Poly Water - Poseidon.unitypackage Low Poly Water - Poseidon 是一个 Unity 插件,专门用于创建低多边形风格的水体效果。它适用于想要在游戏中实现具有艺术感的水面效果,同时保持较高的性能和优化...
Native MongoDB x 277 ops/sec ±2.42% (80 runs sampled)Poseidon MongoDB x 271 ops/sec ±2.65% (71 runs sampled)Fastest is Native MongoDB,Poseidon MongoDB安装要开始,只需运行 npm install poseidon-mongo...
波塞冬1.说明波塞冬采用微服务架构方式,基于SpringCloud + SpringBoot + Mybatis Plus的商城系统。...2.组织结构Poseidon├── psd-config -- 通用配置 ├── psd-discovery -- Eureka注册中心 -- po
无需任何重新编译,代码修改或操作系统安装,它便能够在运行时自动找到并行区域的最佳线程数,以及所有区域(即并行和顺序)的最佳涡轮增压模式。并行应用程序。 它有两个版本: (I)波塞冬(Poseidon)细粒度:...
poseidon-cloud: 分布式平台快速开发框架 :penguin: 项目说明 集成 spring-cloud 环境,方便分布式项目的快速开发。使用该框架,使用者无需操心业务之外的问题,极大的节省了开发者的开发时间。 使用的组件 (阿里...
POSEIDON_API 是一个专为CRUD(创建、读取、更新、删除)操作设计的API,它在JavaScript环境中运行,旨在简化数据管理和交互。在Web开发中,CRUD是基本的数据操作,对于构建动态和交互式的网页应用至关重要。本文将...
PoseidonForUml8.0 带key _ubuntu xp通用可用
【波塞冬(Poseidon)开源内容管理系统】 波塞冬,以其古希腊海神的名字命名,是一款独特的开源内容管理系统(CMS)。与许多其他CMS系统强调功能丰富和高度可定制性不同,波塞冬的设计理念是“小而美”,追求的是...
"Poseidon项目"是一个基于Java技术的商城项目,它的核心目标是为开发者提供一个实践Java技术、学习电子商务系统开发的平台。在这个项目中,我们可以深入理解Java在构建大型分布式系统中的应用,涵盖了许多重要的IT...