首页 文章

如何在Mac OS X 10.6(Snow Leopard)上开始使用D

提问于
浏览
11

我已经对“D”感兴趣了几年,最近决定开始真正玩它 . 我已经能够很容易地掌握基础知识,我喜欢这种语言的基本功能集,我读的越多,我得到的印象越深刻 .

现在,我对编写自定义Web应用程序服务器作为业余爱好项目非常感兴趣,我希望它是一个简单的二进制文件,使用动态链接库来存储实际的Web应用程序 . 我相信D是这次冒险的完美语言 .

只有一个大问题......在过去的几天里,我完全无法使用任何类型的IDE设置 . 我可以在命令行上编译和运行一切,但我在任何IDE中都可以尝试(Code :: Blocks,eclipse血统,带D插件的Xcode,甚至是Windows XP上VirtualBox中运行的Windows D-IDE) Pro)唯一发生的事情是:

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

经过两天尝试不同的事情并遵循教程,这真的让我感到紧张 . 我想学习有效地使用D,但是我需要一些舒适的工具链,包括编辑器中的代码完成,如果我想保持我的理智,我显然这样做 .

[编辑:重点强调 really 重要位]

Is there anyone that can help me set up eclipse or (preferably) netbeans (but no plugin seems to be publicly available) to give me compile and run abilities in the IDE, along with code completion? on my Mac, running Mac OS X 10.6?

我想使用phobos库(以及一个2.0编译器),但我真的不在乎它的dmdgdmd (gdcmac) .

[加成]

我相信我们可以假设我的dmd编译器安装正常,因为它可以从命令行运行 . 我只是不想在命令行中使用它,因为它很繁琐 . 问题是关于和IDE,编译器工作,它只是IDE不会

6 回答

  • 1

    好吧,我身上的持久性错误无法让问题独自解决,我终于开始工作了 .

    在Mac OS X 10.6上运行所需的所有组件是:

    • DMD编译器

    • Eclipse "Galileo"(版本3.4)

    • 血统

    • DSSS

    • 更改为 /usr/etc/rebuild/default

    • 我一起砍的新文件 /usr/etc/rebuild/macosx.conf

    • Eclipse的全局和每个项目设置

    按照这些说明操作后,Eclipse将能够在D项目上完成代码完成,并且您也可以在IDE中构建/运行 .

    使其运行的实际步骤如下 .

    • 安装digitalmars dmd 2.0编译器

    • digitalmars.comdirect link to 2.041)下载二进制发行版

    • 将下载的文件解压缩到 ~/somefolder (为我创建了一个〜/ somefolder / dmd2文件夹,我将在本例的持续时间内使用该文件夹 . )
      终端中的

    • /Applications/Utilities/Terminal.app )将文件移动到目的地

    • sudo mv ~/somefolder/dmd2/osx/bin/* /usr/bin/ 在被要求时输入您的登录密码

    • 将刚刚复制的dmd.conf移动到其位置: sudo mv /usr/bin/dmd.conf /etc/dmd.conf

    • sudo mv ~/somefolder/dmd2/osx/lib/* /usr/lib/

    • sudo mv ~/somefolder/dmd2 /usr/

    • 使用您喜欢的文本编辑器编辑 /etc/dmd.conf 以包含以下内容:

    [环境] DFLAGS = -I / usr / dmd2 / src / phobos -I / usr / dmd2 / src / druntime / import -L-L / usr / lib

    • http://www.eclipse.org/downloads/(我为c / c选择了可可版本)中下载并安装了您最喜欢的Mac OS X版本的eclipse

    • 安装下降( almost ,根据the normal instructions in the wiki

    • 运行Eclipse(不要以root身份运行)
      从菜单栏中

    • goto Help - > Install New Software . (wtf是在 Help 菜单中做的吗?!)

    • http://downloads.dsource.org/projects/descent/update-site 复制/粘贴到url字段中 .

    • 按照屏幕说明完成安装 .

    • 安装dsss from sourceforgedirect link to .dmg

    • 在任何其他磁盘映像上使用安装程序包 .

    • 创建一个文件 /usr/etc/rebuild/macosx.conf 并将以下代码段粘贴到其中 . (并保存,duh)

    profile = phobos
    编译= DMD
    INIFILE = dmd.conf
    exeext =
    objext = O
    版本= DigitalMars
    noversion = GNU
    版本的MacOSX =
    版本的linux =
    noversion = Unix的
    noversion = Posix的
    noversion =视窗
    noversion =的Win32
    noversion = Win64的
    版本= X86
    noversion = PPC
    noversion = X86_64
    版本= D_InlineAsm
    版本= D_InlineAsm_X86
    noversion = D_InlineAsm_PPC
    noversion = D_InlineAsm_X86_64
    版本= LittleEndian
    noversion =大尾端

    [编译]
    cmd = dmd -version = MacOSX -c $ i
    标志= $ I
    INCDIR = -I $ I
    LIBDIR = -L-L $我
    优化= -O
    版本= -version = $ I

    [链接]
    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 $我
    LIB = -L-1 $ I
    标志= -L $ I

    [liblink]
    安全= YES
    oneatatime = YES
    cmd =如果[! -z“$ o”];然后ar rc $ o $ i;科幻

    LIBDIR =
    LIB =
    标志=

    [postliblink]
    CMD = ranlib的$ I

    [shliblink]
    shlibs的=无

    [dyliblink]
    dylibs =无

    • /usr/etc/rebuild/default 文件更改为: profile=dmd-macosx

    • 设置Eclipse以完成代码

    • 在全局eclipse首选项中导航tp D => Build Path => User Libraries

    • 单击 New ,键入"std",按 OK 选择新创建的条目,单击 Add Directory

    • 导航到 /usr/dmd2/src/phobos/std 并添加它 .

    • 设置Eclipse项目 . You have to do this manually for every D project you'll make

    • 使用"D => D Project"向导创建一个新项目(感谢Descent)

    • 进入项目属性(右键单击Project Explorer中的项目,然后选择Properties)

    • 在左侧列表中选择 D Build Path ,然后在出现的面板中选择 Include Path 选项卡 .

    • 单击 Add Library 按钮,然后在向导的第二页中选择 std .

    • 配置extarnal构建工具

    • 转到 External tools configurations... (从小绿色播放按钮的下拉菜单中,在构建/运行/调试工具栏中,工具箱前面有工具箱)

    • 在左侧列表中单击 Program 并从上下文菜单中选择 New .

    • 为您的配置提供一个像"Build with dsss"这样不错的名称并设置以下选项:

    • 位置: /usr/bin/dsss

    • 工作目录:项目的dsss.conf文件的完整目录路径(如果没有dsss.conf文件,请在命令行上创建一个: dsss genconfig

    • 参数: build (或重建,或清理,或......)

    • 根据需要重复上面的步骤2和3,以获得尽可能多的构建/运行选项 .

    恭喜,现在一切都应该有效 .

    如果由于某种原因这对您不起作用,请告诉我,我会很高兴找出它出错的地方并帮助您使其正常工作 . 如果有更好或更简单的方式,我也很想知道它 .

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

    清楚地表明它无法正确找到库 . 所以,第一个问题是你的dmd.conf是如何设置的 . 您需要确保它指向src / phobos,src / druntime / import和osx / lib的正确位置 - 无论您放在哪里 . 就个人而言,我将dmd代码放在home的子文件夹中,不要尝试在/ 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/
    

    我的猜测是你把dmd.conf放在/ etc中并且一直在编辑那个但是把原来的dmd.conf留在了

    /where_dmd_is/dmd2/osx/bin/
    

    当然,我正在编辑的是dmd正在使用的那个(因此请确保dmd首先看到的地方没有dmd.conf),而你需要确定的第二件事就是路径在你的dmd.conf正确指向dmd的东西 . 如果这两件事是正确的,那么dmd应该正确找到库 .

    在旁注中,我会指出,但是,鉴于您关于想要使用共享库的评论是共享库不使用D1 - 我怀疑它们不会这样做 . 在D新闻组(http://www.digitalmars.com/NewsGroup.html)上有关于它的讨论,所以你可以看看那里 . 这是一个关注的问题,正在研究中,但是现在可能不是最好的问题 .

  • 1

    如果这是一个IDE的问题,就eclipse而言,我相信要看的插件是下降的:http://www.dsource.org/projects/descent

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

  • 11

    如果您想快速入门(又名双击安装):D for Xcode

    要求:

    • Xcode

    而已 . 安装最新的dmd编译器,因此它也适用于终端等 .

  • 1

    因为我不时地在搜索结果中看到这个问题,我想我会保持相关性 .

    如今;在Mountain Lion时代,Mono-D project存在一个更容易的解决方案

    只需安装MonoDevelop(或Xamarin Studio)并按照five minute installation manual

  • 0

    (你可以在D 1.0上使用Phobos . 无论如何...)

    你在哪里安装了Phobos和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
    

相关问题