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


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

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

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

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

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

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

是否有人可以帮助我设置eclipse或(最好是)netbeans(但似乎没有插件似乎是公开的)来给我编译和运行IDE的能力,以及代码完成?在我的Mac上运行Mac OS X 10.6?

我想使用phobos库(以及一个2.0编译器),但我真的不在乎它是否 DMD 要么 gdmd(gdcmac)

[加成]

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


10795
2018-03-07 15:12


起源



答案:


好吧,我身上的持久性错误无法让问题独自解决,我终于让它发挥作用了。

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

  • DMD编译器
  • Eclipse“Galileo”(3.4版)
  • 降落
  • DSSS
  • 改变 /usr/etc/rebuild/default
  • 我一起入侵的新文件 /usr/etc/rebuild/macosx.conf
  • Eclipse的全局和每个项目设置

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

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

  1. 安装digitalmars dmd 2.0编译器
    1. 从中下载二进制发行版 digitalmars.com (直接链接到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 -L-L / usr / lib

  1. 下载并安装您最喜欢的Mac OS X版本的eclipse,其中有数百种可用于 http://www.eclipse.org/downloads/ (我为c / c ++挑选了一个可可版本)
  2. 安装下降(几乎 按照 维基中的正常说明
    1. 运行Eclipse(不要以root身份运行)
    2. Help  - > Install New Software 从菜单栏。 (wtf就是这样做的 Help 菜单?!)
    3. 复制粘贴 http://downloads.dsource.org/projects/descent/update-site 进入网址领域。
    4. 按照屏幕说明完成安装。
  3. 安装 来自sourceforge的dsss (直接链接到.dmg
    1. 像其他任何一个一样使用磁盘映像上的安装程序包。
    2. 创建一个文件 /usr/etc/rebuild/macosx.conf 并将以下代码段粘贴到其中。 (并保存,duh)
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
  1. 改变了 /usr/etc/rebuild/default 要阅读的文件: profile=dmd-macosx
    1. 设置Eclipse以完成代码
  2. 在全局eclipse偏好中导航tp D => Build Path => User Libraries
    1. 点击 New,键入“std”,按 OK 选择新创建的条目,单击 Add Directory
      • 导航 /usr/dmd2/src/phobos/std 并添加它。
    2. 设置Eclipse项目。 您必须手动为每个D项目执行此操作
    3. 使用“D => D Project”向导创建一个新项目(感谢Descent)
    4. 进入项目属性(右键单击Project Explorer中的项目,然后选择Properties)
    5. 在左侧列表中选择 D Build Path 并在出现的面板中选择 Include Path 标签。
    6. 点击 Add Library 按钮并选择 std 在向导的第二页中。
    7. 配置extarnal构建工具
    8. External tools configurations... (从构建/运行/调试工具栏中的工具箱前面的小绿色播放按钮下拉菜单)
    9. 在左侧单击的列表中 Program 并选择 New 从上下文菜单中。
    10. 给你的配置一个像“Build with dsss”这样的好名字,并设置以下选项:
      • 位置: /usr/bin/dsss
      • 工作目录:项目的dsss.conf文件的完整目录 (如果您没有dsss.conf文件,请在命令行上创建一个: dsss genconfig
      • 参数: build (或重建,或清洁,或...)
    11. 根据需要,重复上面的步骤2和3,以获得尽可能多的构建/运行选项。

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

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


11
2018-03-11 16:09



有点难过,我没有得到比这里的烂摊子更好的答案。 - Kris


答案:


好吧,我身上的持久性错误无法让问题独自解决,我终于让它发挥作用了。

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

  • DMD编译器
  • Eclipse“Galileo”(3.4版)
  • 降落
  • DSSS
  • 改变 /usr/etc/rebuild/default
  • 我一起入侵的新文件 /usr/etc/rebuild/macosx.conf
  • Eclipse的全局和每个项目设置

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

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

  1. 安装digitalmars dmd 2.0编译器
    1. 从中下载二进制发行版 digitalmars.com (直接链接到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 -L-L / usr / lib

  1. 下载并安装您最喜欢的Mac OS X版本的eclipse,其中有数百种可用于 http://www.eclipse.org/downloads/ (我为c / c ++挑选了一个可可版本)
  2. 安装下降(几乎 按照 维基中的正常说明
    1. 运行Eclipse(不要以root身份运行)
    2. Help  - > Install New Software 从菜单栏。 (wtf就是这样做的 Help 菜单?!)
    3. 复制粘贴 http://downloads.dsource.org/projects/descent/update-site 进入网址领域。
    4. 按照屏幕说明完成安装。
  3. 安装 来自sourceforge的dsss (直接链接到.dmg
    1. 像其他任何一个一样使用磁盘映像上的安装程序包。
    2. 创建一个文件 /usr/etc/rebuild/macosx.conf 并将以下代码段粘贴到其中。 (并保存,duh)
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
  1. 改变了 /usr/etc/rebuild/default 要阅读的文件: profile=dmd-macosx
    1. 设置Eclipse以完成代码
  2. 在全局eclipse偏好中导航tp D => Build Path => User Libraries
    1. 点击 New,键入“std”,按 OK 选择新创建的条目,单击 Add Directory
      • 导航 /usr/dmd2/src/phobos/std 并添加它。
    2. 设置Eclipse项目。 您必须手动为每个D项目执行此操作
    3. 使用“D => D Project”向导创建一个新项目(感谢Descent)
    4. 进入项目属性(右键单击Project Explorer中的项目,然后选择Properties)
    5. 在左侧列表中选择 D Build Path 并在出现的面板中选择 Include Path 标签。
    6. 点击 Add Library 按钮并选择 std 在向导的第二页中。
    7. 配置extarnal构建工具
    8. External tools configurations... (从构建/运行/调试工具栏中的工具箱前面的小绿色播放按钮下拉菜单)
    9. 在左侧单击的列表中 Program 并选择 New 从上下文菜单中。
    10. 给你的配置一个像“Build with dsss”这样的好名字,并设置以下选项:
      • 位置: /usr/bin/dsss
      • 工作目录:项目的dsss.conf文件的完整目录 (如果您没有dsss.conf文件,请在命令行上创建一个: dsss genconfig
      • 参数: build (或重建,或清洁,或...)
    11. 根据需要,重复上面的步骤2和3,以获得尽可能多的构建/运行选项。

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

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


11
2018-03-11 16:09



有点难过,我没有得到比这里的烂摊子更好的答案。 - Kris


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.conf是dmd正在使用的那个(因此请确保dmd首先看到的地方没有dmd。 conf),你需要确定的第二件事是你的dmd.conf中的路径正确指向了dmd的东西。如果这两件事是正确的,那么dmd 应该 正确找到库。

在旁注中,我会指出,但是,鉴于您对要使用共享库的评论,共享库现在无法正常使用D2(我不知道它们是否与D1一起使用,因为我不使用D1 - 我怀疑他们没有)。关于D新闻组的讨论( http://www.digitalmars.com/NewsGroup.html ),所以你可以看看那里。这是雷达上正在研究的东西,但还没有完全发挥作用。此外,您可以查看新闻组以获取有关D相关问题的进一步帮助。这可能是现在最好问的地方。


1
2018-03-10 23:30



库可能是静态的而不是动态的,所以这不是问题,如果它成为一个问题,我很可能会解决它,如果给予一个体面的工作环境。我没有保留原始文件,因为我可以轻松地再次解压缩它们,我的系统上只有一个dmd.conf并且它位于/ etc / sudo find / -name "dmd.conf" -print 告诉我。我再次向自己保证所有路径都已正确设置。 - Kris


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

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


1
2018-03-11 09:12



我已经安装了日食和血统以及dsss。代码完成不适用于std库(phobos)中的任何内容,即使编译时视图和类型浏览器工作,编译也根本不起作用。我已经查看了wiki和所有内容,但是没有任何演练最终导致我有一个可用的IDE,这就是我在这里问的原因 - Kris


如果你想快速入门(又名双击安装): D代表Xcode

要求:

  • Xcode中

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


1
2018-06-28 18:29



现在尝试,当我问这个问题不起作用时,X for Xcode的版本发现了,这里希望它现在更好。 - Kris
我以前遇到的问题大多相同,代码完成并不真正起作用(只是来自当前文件的关键字),没有调试支持(断点不起作用)等。 - Kris
啊,对不起,我领先于自己。是的,缺少正确的调试和完整的代码完成支持。这在“已知问题”中提到。我感觉这是当前发展的“优势”。毕竟,D是alpha。也许你自己可以贡献这些功能? 轻推一下 :) - 0scar


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

如今;在Mountain Lion时代,一个更简单的解决方案存在于 Mono-D项目

只需安装MonoDevelop(或Xamarin Studio)并按照 五分钟安装手册


1
2017-08-06 03:39





(你可以在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


0
2018-03-10 20:00



我已经编辑了dmd.conf以获得绝对路径(DFLAGS = -I / usr / dmd2 / src / phobos -I / usr / dmd2 / src / druntime / import -LL / usr / dmd2 / lib)我还对二进制文件进行了符号链接进入/ usr / bin 和 将所有与dmd2相关的路径添加到我的PATH环境(bash配置文件),遗憾的是没有任何区别。 - Kris