2010-03-07 162 views
11

我已经对“D”感兴趣了好几年了,最近决定开始真正使用它。我已经能够很容易掌握基础知识,我喜欢该语言的基本功能集,而且我阅读的内容越多,所得到的印象就越深刻。如何在Mac OS X 10.6(Snow Leopard)上使用D开始

现在,我非常有兴趣将自定义Web应用程序服务器编写为业余爱好项目,我希望它是一个简单的二进制文件,并使用实际Web应用程序的动态链接库。我相信D是这个合资企业的完美语言。

只有一个大问题......在过去的几天里,我完全无法获得任何IDE设置的工作。我可以在命令行上编译和运行所有东西,但是我可以在任何IDE中使用(Code :: Blocks,eclipse + descent,带有D插件的Xcode,甚至是在Windows上的VirtualBox中运行的Windows D-IDE) XP专业版)的唯一的事情是有史以来发生的情况是:

object.d: Error: module object cannot read file 'object.d'

经过两次天的尝试不同的东西,下面的教程,这实在是让我心烦。我想学会高效地使用D,但是如果我想保持理智,我需要一些在编辑器中包含代码完成的舒适工具链,我明显这样做。

[编辑:加强调的真的重要的一点]

是否有任何人可以帮助我建立Eclipse或(最好)的NetBeans(但没有插件似乎是公开的)让我在IDE中编译和运行能力,以及代码完成?在我的Mac上运行Mac OS X 10.6?

我想使用的火卫一库(和为此的2.0编译器),但我真的不关心,如果它dmdgdmd (gdcmac)

[此外]

我相信我们可以假设,我的DMD编译安装是为了,因为它从命令行工作。我只是不想在命令行中使用它,因为它很乏味。现在的问题是关于和IDE,编译器工程,它只是集成开发环境,不会

回答

11

那么,在我的持续性bug could不能离开这个问题,我终于得到它的工作。

所需的组件把一切的工作在Mac OS X 10.6是:

  • DMD编译器
  • Eclipse的 “伽利略”(3.4版)
  • 下降
  • DSSS
  • 一更改为/usr/etc/rebuild/default
  • 我一起入侵的新文件/usr/etc/rebuild/macosx.conf
  • 为Eclipse

全局和每个项目设置按照以下说明后,您将有Eclipse的能够做你的d项目代码完成,你就能够建立/从IDE中以及运行。

实际操作步骤如下。

  1. 安装digitalmars dmd 2。0编译
    1. 下载从digitalmars.comdirect link to 2.041)二进制分发
    2. 解压下载文件到~/somefolder(创建一个〜/ somefolder/DMD2夹给我,我会用这个例子的时间。)
    3. 终端(/Applications/Utilities/Terminal.app)将文件移动到目的地
    4. sudo mv ~/somefolder/dmd2/osx/bin/* /usr/bin/当被问及
    5. 招刚才复制dmd.conf它的位置输入你的登录密码:sudo mv /usr/bin/dmd.conf /etc/dmd.conf
    6. sudo mv ~/somefolder/dmd2/osx/lib/* /usr/lib/
    7. sudo mv ~/somefolder/dmd2 /usr/
    8. 使用自己喜欢的文本编辑器编辑/etc/dmd.conf包含以下内容:

[环境]

DFLAGS = -I在/ usr/DMD2/src/phobos -I/usr/dmd2/src/druntime/import -LL/usr/lib

  • 下载并安装Eclipse的你最喜欢的Mac OS X版本的可用在http://www.eclipse.org/downloads/了许许多多的数百(我选了个可可版本的C/C++)
  • 安装后裔(几乎the normal instructions in the wiki
    1. 运行Eclipse(不要打扰作为root运行)
    2. 转到Help - 从菜单栏>Install New Software。 (跆拳道是否在Help菜单?!)
    3. 复制/粘贴http://downloads.dsource.org/projects/descent/update-site到url字段中。
    4. 按照屏幕上的说明完成安装。
  • 安装dsss from sourceforgedirect link to .dmg
    1. 使用安装包像任何其他磁盘映像上。
    2. 创建一个文件/usr/etc/rebuild/macosx.conf并粘贴下面的代码片段。(并保存,杜)
  • profile=phobos 
    compiler=dmd 
    inifile=dmd.conf 
    exeext= 
    objext=o 
    version=DigitalMars 
    noversion=GNU 
    version=MacOSX 
    version=linux 
    noversion=Unix 
    noversion=Posix 
    noversion=Windows 
    noversion=Win32 
    noversion=Win64 
    version=X86 
    noversion=PPC 
    noversion=X86_64 
    version=D_InlineAsm 
    version=D_InlineAsm_X86 
    noversion=D_InlineAsm_PPC 
    noversion=D_InlineAsm_X86_64 
    version=LittleEndian 
    noversion=BigEndian 
    
    [compile] 
    cmd=dmd -version=MacOSX -c $i 
    flag=$i 
    incdir=-I$i 
    libdir=-L-L$i 
    optimize=-O 
    version=-version=$i 
    
    [link] 
    oneatatime=yes 
    #cmd=dmd -L-lphobos $i -of$o 
    cmd=dmd $i -of$o 
    # cmd=dmd -L--start-group -L-lphobos $i -of$o 
    
    libdir=-L-L$i 
    lib=-L-l$i 
    flag=-L$i 
    
    [liblink] 
    safe=yes 
    oneatatime=yes 
    cmd=if [ ! -z "$o" ]; then ar rc $o $i; fi 
    
    libdir= 
    lib= 
    flag= 
    
    [postliblink] 
    cmd=ranlib $i 
    
    [shliblink] 
    shlibs=no 
    
    [dyliblink] 
    dylibs=no 
    
  • 变化/usr/etc/rebuild/default文件读取:profile=dmd-macosx
  • 设置Eclipse以使代码完成
  • 在全球eclipse偏好中na vigate TP D =>Build Path =>User Libraries
    1. 点击New,键入 “性病”,按OK选择新创建的条目,点击Add Directory
      • 定位到/usr/dmd2/src/phobos/std和添加。
    2. 设置Eclipse项目。 你必须为每个d项目手动做到这一点,你会做
    3. 用“d => d项目”向导创建一个新的项目(感谢下降)
    4. 走进项目属性(右单击项目资源管理器中的项目并选择属性)
    5. 在左侧列表中选择D Build Path,然后在出现的面板中选择Include Path选项卡。
    6. 单击Add Library按钮,然后在向导的第二页中选择std
    7. 配置(与在它前面的工具箱在构建/运行/调试工具栏上啄了一点绿色播放按钮,从下拉菜单中)
    8. 在左侧列表中的extarnal构建工具
    9. 转到External tools configurations...右键单击Program并从上下文菜单中选择New
    10. 给你的配置,如“与DSSS建设”,并设置下列选项一个体面的名字:
      • 地点:/usr/bin/dsss
      • 工作目录:完整路径目录中的项目 您dsss.conf文件(如果你没有一个dsss.conf文件中创建一个在命令行:dsss genconfig
      • 参数:build(或重建,或清洗,或......)
    11. 重复步骤2和如上所述,您可以根据您的需要选择多个构建/运行选项。
  • 恭喜,一切都应该现在就工作。

    如果由于某种原因,这不适用于您,让我知道,我会很乐意找出它出错的地方,并帮助您实现它。如果有更好或更简单的方法,我也很想了解它。

    +0

    有点伤心,我没有得到比这个混乱更好的答案。 – Kris 2010-03-17 01:04:14

    0

    (你可以在d 1.0使用的火卫一。反正...)

    你在哪里安装火卫一和druntime头?

    <the .zip file>/src/druntime/ 
    <the .zip file>/src/phobos/ 
    

    通常我复制他们进入/usr/include

    (另外,尽量编辑dmd.conf使用绝对路径:

    [Environment] 
    DFLAGS=-I/usr/include/phobos -I/usr/include/druntime/import -L-L/usr/lib 
    

    +0

    我已经编辑了dmd.conf有绝对路径(DFLAGS = -I/usr/dmd2/src/phobos -I/usr/dmd2/src/druntime/import -LL/usr/dmd2/lib)我也将二进制文件符号链接到/ usr/bin _and_中添加了所有与我的PATH环境相关的dmd2相关路径(bash简介),不幸的是没有任何区别。 – Kris 2010-03-10 21:12:50

    1
    object.d: Error: module object cannot read file 'object.d' 
    

    清楚地表明,它不能正确地找到这些库。所以,第一个问题是你的dmd.conf是如何设置的。你需要确保它指向src/phobos,src/druntime/import和osx/lib的正确位置 - 无论你放置哪些位置。就我个人而言,我把dmd代码放在家里的子文件夹中,不要试着将它安装在/ usr中,但是说明书确实告诉你将它们安装在默认位置,所以它应该可以工作。

    假设你的dmd.conf看起来没问题,最可能的情况是它实际上使用了错误的dmd.conf。每对数字火星网站上的说明(http://www.digitalmars.com/d/2.0/dmd-osx.html):

    dmd will look for the initialization file dmd.conf in the following sequence of directories: 
    
    1. current working directory 
    2. directory specified by the HOME environment 
    3. variable directory dmd resides in 
    4. /etc/ 
    

    我的猜测是,你在/ etc dmd.conf并已编辑那一个,但在

    /where_dmd_is/dmd2/osx/bin/ 
    
    离开原来dmd.conf

    当然,我曾经有过这样的事情发生过一两次。无论如何,你需要确保的第一件事是你正在编辑的dmd.conf是dmd正在使用的dmd.conf(所以确保dmd最先看到的地方没有dmd。 conf),第二件事是你需要确保的是你的dmd.conf中的路径正确指向了dmd的东西。如果这两件事是正确的,那么dmd 应该找到正确的库。

    在附注中,我会指出,但是,考虑到您希望使用共享库的评论是共享库无法正确使用D2(我不知道它们是否与D1一起工作,因为我不要使用D1 - 我怀疑他们不会)。有关D新闻组的讨论(http://www.digitalmars.com/NewsGroup.html),所以你可以看看那里。这件事正在受到关注,并正在研究中,但尚未完全奏效。此外,您可以查看新闻组,以获取有关D相关问题的进一步帮助。这可能是现在要问的最好的地方。

    +0

    这些库可能是静态的而不是动态的,所以这不是一个问题,如果它成为一个问题,我很可能会修复它,如果给予一个体面的工作环境。我没有保留原始文件,因为我可以轻松地再次解压缩它们,在我的系统上只有一个dmd.conf,它位于/ etc /'sudo find/-name“dmd.conf”-print'告诉我这一点。我再次向自己保证,所有路径都正确设置。 – Kris 2010-03-11 01:36:12

    1

    如果它是一个IDE的问题,尽可能日食去,我相信,插件看看是血统:http://www.dsource.org/projects/descent

    不幸的是,我还没有尝试过自己,所以我不知道它有多好。根据其wiki页面,它主要用于D1,但至少在某种程度上支持D2。

    +0

    我已经安装了eclipse和血统,以及dsss。代码完成不适用于std库(phobos)中的任何内容,即使编译时视图和类型浏览器确实有效,编译也不会起作用。我已经看过维基和所有的,但没有演练结果在我有一个工作的IDE,这就是为什么我在这里问 – Kris 2010-03-11 11:19:09

    1

    ,如果你想快速上手(又名双击安装):D for Xcode

    要求:

    • 的Xcode

    就是这样。安装最新的dmd编译器,所以它在终端也是如此。

    +0

    现在就试一试,当我问这个问题时,X代码的D版本找不到了,这里希望现在好一点。 – Kris 2010-06-28 21:31:58

    +0

    大部分与我之前遇到的问题相同,代码完成并不真正起作用(只是来自当前文件的关键字),没有调试支持(断点不起作用)等等。 – Kris 2010-06-28 21:37:34

    +0

    啊,对不起,我超前了。是的,没有正确的调试和完整的代码完成支持。这在“已知问题”中提到。我有一种感觉,这是当前发展的“边缘”。毕竟,D在alpha中。也许你可以自己贡献这些功能? *微调微调*:) – 0scar 2010-06-29 00:16:41

    1

    当我不时看到这个问题在我的搜索结果中回来时,我想我会保持相关。

    时下;在山狮的时代,一个更简单的解决方案存在于Mono-D project

    只要安装MonoDevelop的(或Xamarin室),并按照five minute installation manual

    相关问题