11 Stimmen

Wie man mit D auf Mac OS X 10.6 (Snow Leopard) anfängt

Ich interessiere mich seit ein paar Jahren für "D" und habe mich kürzlich entschlossen, tatsächlich damit anzufangen zu spielen. Ich habe die Grundlagen ziemlich leicht erfassen können, ich liebe den grundlegenden Funktionsumfang der Sprache und je mehr ich darüber lese, desto beeindruckter bin ich.

Jetzt bin ich sehr daran interessiert, einen benutzerdefinierten Webanwendungsserver als Hobbyprojekt zu schreiben und möchte, dass es eine einfache Binärdatei ist, die dynamisch verknüpfte Bibliotheken für die tatsächlichen Webanwendungen verwendet. Ich glaube, dass D die perfekte Sprache für dieses Unternehmen ist.

Es gibt nur ein großes Problem... in den letzten paar Tagen war ich vollkommen unfähig, irgendeine Art von IDE-Einrichtung zum Laufen zu bringen. Ich kann alles problemlos über die Befehlszeile kompilieren und ausführen, aber alles, was ich in den verfügbaren IDEs versuche (Code::Blocks, Eclipse+Descent, Xcode mit D-Plugin und sogar das Windows-D-IDE in VirtualBox auf Windows XP Pro), ist immer nur:

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

Nach zwei Tagen des Ausprobierens verschiedener Dinge und dem Befolgen von Anleitungen regt mich das wirklich auf. Ich möchte effizient lernen, D zu verwenden, aber ich brauche eine komfortable Toolkette, die auch Codevervollständigung im Editor enthält, wenn ich meinen Verstand behalten will, was ich offensichtlich tun möchte.

[Bearbeitung: Betonung des wirklich wichtigen Teils]

Kann mir jemand helfen, Eclipse oder (vorzugsweise) NetBeans (aber scheinbar ist kein Plugin öffentlich verfügbar) auf meinem Mac unter Mac OS X 10.6 so einzurichten, dass ich Kompilier- und Ausführungsmöglichkeiten in der IDE habe, zusammen mit Codevervollständigung?

Ich möchte die Phobos-Bibliotheken verwenden (und somit einen 2.0-Compiler), aber es ist mir egal, ob es dmd oder gdmd (gdcmac) ist.

[Zusatz]

Ich glaube, wir können davon ausgehen, dass meine Installation des DMD-Compilers in Ordnung ist, weil er von der Befehlszeile aus funktioniert. Ich möchte nur nicht von der Befehlszeile aus darauf zugreifen, weil es mühsam ist. Die Frage betrifft eine IDE, der Compiler funktioniert, es sind nur die IDEs, die nicht funktionieren.

11voto

Kris Punkte 38235

Nun, der hartnäckige Kämpfer in mir konnte das Problem nicht alleine lassen und ich habe es schließlich zum Laufen gebracht.

Die erforderlichen Komponenten, um alles auf Mac OS X 10.6 zum Laufen zu bringen, sind:

  • DMD Compiler
  • Eclipse "Galileo" (Version 3.4)
  • Descent
  • DSSS
  • eine Änderung in /usr/etc/rebuild/default
  • eine neue Datei, die ich zusammengehauen habe /usr/etc/rebuild/macosx.conf
  • globale und projektspezifische Einstellungen für Eclipse

Wenn Sie diesen Anweisungen folgen, wird Eclipse in der Lage sein, Code-Vervollständigung für Ihre D-Projekte durchzuführen und Sie können auch innerhalb der IDE bauen/ausführen.

Die tatsächlichen Schritte, um es funktionsfähig zu machen, sind wie folgt.

  1. Installieren Sie den digitalmars-DMD 2.0-Compiler
    1. laden Sie die Binärverteilung von digitalmars.com herunter (Direktlink zu 2.041)
    2. entpacken Sie die heruntergeladene Datei in ~/somefolder (das hat bei mir einen ~/somefolder/dmd2-Ordner erstellt, den ich für dieses Beispiel verwenden werde.)
    3. im Terminal (/Applications/Utilities/Terminal.app) verschieben Sie die Dateien an ihren Bestimmungsort
    4. sudo mv ~/somefolder/dmd2/osx/bin/* /usr/bin/ geben Sie Ihr Anmeldepasswort ein, wenn Sie dazu aufgefordert werden
    5. verschieben Sie die gerade kopierte dmd.conf an ihren Speicherort: 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. verwenden Sie Ihren Lieblings-Texteditor, um /etc/dmd.conf zu bearbeiten und den folgenden Inhalt einzufügen:

[Umgebung]

DFLAGS=-I/usr/dmd2/src/phobos -I/usr/dmd2/src/druntime/import -L-L/usr/lib

  1. Laden Sie Ihre Lieblingsversion von Eclipse für Mac OS X von den zig hunderten verfügbaren unter http://www.eclipse.org/downloads/ herunter (ich habe eine Cocoa-Version für C/C++ ausgewählt)
  2. Installieren Sie Descent (fast wie in den normalen Anweisungen im Wiki)
    1. starten Sie Eclipse (führen Sie es nicht als Root aus)
    2. gehen Sie zu Hilfe -> Neue Software installieren in der Menüleiste. (was macht das im Hilfe-Menü?!)
    3. kopieren/einfügen Sie http://downloads.dsource.org/projects/descent/update-site in das URL-Feld.
    4. folgen Sie den Bildschirmanweisungen, um die Installation abzuschließen.
  3. installieren Sie dsss von Sourceforge (Direktlink zur .dmg)
    1. verwenden Sie das Installationspaket auf dem Disk-Image wie jedes andere.
    2. erstellen Sie eine Datei /usr/etc/rebuild/macosx.conf und fügen Sie den folgenden Ausschnitt ein. (und speichern, na klar)
Profil=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

[Kompilieren]
Cmd=dmd -version=MacOSX -c $i
Flag=$i
Incdir=-I$i
Libdir=-L-L$i
Optimieren=-O
Version=-Version=$i

[Verlinken]
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=wenn [ ! -z "$o" ]; dann ar rc $o $i; fi

libdir=
lib=
Flag=

[Postliblink]
Cmd=ranlib $i

[Shliblink]
Shlibs=no

[Dyliblink]
Dylibs=no
  1. ändern Sie die /usr/etc/rebuild/default-Datei so, dass sie liest: Profil=dmd-macosx
    1. Richten Sie Eclipse ein, um Code-Vervollständigung zu haben
  2. In den globalen Eclipse-Einstellungen navigieren Sie zu D => Build Path => User Libraries
    1. klicken Sie auf Neu, geben Sie "std" ein, drücken Sie OK, wählen Sie den neu erstellten Eintrag aus, klicken Sie auf Verzeichnis hinzufügen
      • navigieren Sie zu /usr/dmd2/src/phobos/std und fügen Sie es hinzu.
    2. Richten Sie Eclipse-Projekt ein. Sie müssen dies manuell für jedes D-Projekt machen, das Sie erstellen werden
    3. Erstellen Sie ein neues Projekt mit dem "D => D Project"-Assistenten (Dank an Descent)
    4. Gehen Sie in die Projekteigenschaften (Rechtsklick auf das Projekt im Projektmelder und wählen Sie Eigenschaften)
    5. Wählen Sie in der linken Liste D Build Path aus und wählen Sie im angezeigten Panel den Tab Include Path aus.
    6. Klicken Sie auf die Schaltfläche Bibliothek hinzufügen und wählen Sie in der zweiten Seite des Assistenten std aus.
    7. Konfigurieren Sie das externe Build-Tool
    8. Gehen Sie zu External tools configurations... (aus dem Dropdown-Menü in dem kleinen grünen Play-Button mit dem Werkzeugkasten davor in der Build/Run/Debug-Toolbar)
    9. Klicken Sie in der Liste links auf Programm mit der rechten Maustaste und wählen Sie im Kontextmenü Neu
    10. geben Sie Ihrer Konfiguration einen anständigen Namen wie "Mit dsss bauen" und stellen Sie die folgenden Optionen ein:
      • Ort: /usr/bin/dsss
      • Arbeitsverzeichnis: vollständiger Pfad zum Verzeichnis mit Ihrer dsss.conf-Datei für das Projekt (wenn Sie keine dsss.conf-Datei haben, erstellen Sie eine auf der Befehlszeile: dsss genconfig)
      • Argumente: build (oder neu erstellen, oder bereinigen, oder...)
    11. wiederholen Sie die Schritte 2 und 3 oben für so viele Build/Run-Optionen, wie Sie benötigen.

Herzlichen Glückwunsch, jetzt sollte alles funktionieren.

Wenn aus irgendeinem Grund dies nicht für Sie funktioniert, lassen Sie es mich wissen und ich helfe Ihnen gerne herauszufinden, wo es schief gelaufen ist und helfe Ihnen weiter, es zum Laufen zu bringen. Wenn es einen besseren oder einfacheren Weg gibt, würde ich mich auch freuen, davon zu erfahren.

0 Stimmen

Etwas traurig, dass ich keine bessere Antwort erhalten habe als dieses Durcheinander hier.

1voto

Jonathan M Davis Punkte 35765
object.d: Fehler: Modul object kann Datei 'object.d' nicht lesen

deutet deutlich darauf hin, dass die Bibliotheken nicht ordnungsgemäß gefunden werden. Die erste Frage ist also, wie Ihre dmd.conf eingerichtet ist. Sie müssen sicherstellen, dass sie auf die richtigen Orte für src/phobos, src/druntime/import und osx/lib - egal wo Sie diese platziert haben - zeigt. Persönlich lege ich den dmd-Code in einem Unterordner von home ab und versuche nicht, ihn in /usr zu installieren, aber die Anleitungen sagen Ihnen, dass Sie es als Standard dort installieren sollen, also sollte es funktionieren.

Angenommen, Ihre dmd.conf sieht in Ordnung aus, ist die wahrscheinlichste Situation, dass tatsächlich die falsche dmd.conf verwendet wird. Gemäß den Anweisungen auf der Digital Mars-Website (http://www.digitalmars.com/d/2.0/dmd-osx.html):

dmd sucht nach der Initialisierungsdatei dmd.conf in folgender Reihenfolge von Verzeichnissen:

 1. aktuelles Arbeitsverzeichnis
 2. vom HOME-Umgebungsvariable angegebenes Verzeichnis
 3. Variables Verzeichnis, in dem sich dmd befindet
 4. /etc/

Meine Vermutung ist, dass Sie dmd.conf in /etc platziert haben und diese bearbeitet haben, aber die ursprüngliche dmd.conf in

/where_dmd_is/dmd2/osx/bin/

Möglicherweise ist das mir auch schon einmal passiert. Auf jeden Fall müssen Sie sicherstellen, dass die von Ihnen bearbeitete dmd.conf diejenige ist, die dmd verwendet (stellen Sie also sicher, dass in den Orten, wo dmd zuerst sucht, keine dmd.conf vorhanden ist), und zweitens müssen Sie sicherstellen, dass die Pfade in Ihrer dmd.conf korrekt auf die Stellen zeigen, wo sich die dmd-Dateien befinden. Wenn diese beiden Dinge richtig sind, sollte dmd die Bibliotheken korrekt finden.

Als Anmerkung, ich würde jedoch darauf hinweisen, dass Shared Libraries mit D2 derzeit nicht ordnungsgemäß funktionieren (ich habe keine Ahnung, ob sie mit D1 funktionieren, da ich D1 nicht verwende - ich vermute jedoch, dass sie es nicht tun). Es gab Diskussionen darüber im D-Newsgroup (http://www.digitalmars.com/NewsGroup.html), also können Sie dort nachsehen. Es ist etwas, das auf dem Radar steht und untersucht wird, aber noch nicht vollständig funktioniert. Auch können Sie sich für weitere Hilfe zu D-bezogenen Themen an die Newsgroup wenden. Das ist wahrscheinlich der beste Ort, um derzeit Fragen zu stellen.

0 Stimmen

Die Bibliotheken können möglicherweise statisch anstelle von dynamisch sein, also ist das kein Problem und falls es ein Problem wird, könnte ich es wahrscheinlich beheben, wenn mir eine halbwegs funktionierende Umgebung gegeben wird. Ich habe die Originaldateien nicht behalten, da ich sie problemlos wieder entpacken könnte. Es gibt nur eine dmd.conf in meinem System und sie ist in /etc/. sudo find / -name "dmd.conf" -print sagte mir das. Und ich habe erneut sichergestellt, dass alle Pfade korrekt eingerichtet sind.

1voto

Jonathan M Davis Punkte 35765

Wenn es sich um eine IDE handelt, was eclipse betrifft, glaube ich, dass das Plugin, auf das man achten sollte, descent ist: http://www.dsource.org/projects/descent

Leider habe ich es selbst noch nicht ausprobiert, daher weiß ich nicht, wie gut es ist. Laut seiner Wiki-Seite ist es hauptsächlich für D1 gedacht, unterstützt aber D2 zumindest teilweise.

0 Stimmen

Ich habe Eclipse und Descent sowie Dsss installiert. Die Codevervollständigung funktioniert nicht für alles in der Standardbibliothek (Phobos) und die Kompilierung funktioniert überhaupt nicht, obwohl die Ansicht zur Kompilierzeit und die Typbrowser funktionieren. Ich habe mir die Wikis angesehen, aber es gibt keinen Schritt-für-Schritt-Leitfaden, der dazu führt, dass ich eine funktionierende IDE habe. Deshalb habe ich hier gefragt.

1voto

0scar Punkte 3150

Wenn du schnell starten möchtest (aka Doppelklick-Installation): D für Xcode

Anforderungen:

  • Xcode

Das ist alles. Installiert den neuesten dmd Compiler, sodass er auch im Terminal funktioniert usw.

0 Stimmen

Versuche das jetzt, die Versionen von D für Xcode, die ich gefunden habe, als ich diese Frage gestellt habe, haben nicht funktioniert, hoffentlich ist es jetzt besser.

0 Stimmen

Meistens dieselben Probleme wie zuvor, die Code-Vervollständigung funktioniert nicht wirklich (nur Schlüsselwörter aus der aktuellen Datei), keine Debugging-Unterstützung (Breakpoints funktionieren nicht) usw. usw.

0 Stimmen

Ah, entschuldigung, ich war voreilig. Ja, es fehlt eine richtige Fehlerbehebung und Unterstützung für vollständige Codevervollständigung. Dies wird in "bekannten Problemen" erwähnt. Ich habe das Gefühl, dass dies der "Rand" der aktuellen Entwicklung ist. D ist schließlich in der Alpha-Version. Vielleicht können Sie diese Funktionen selbst beisteuern? Stups stups : )

1voto

Kris Punkte 38235

Da ich diese Frage immer wieder in meinen Suchergebnissen sehe, dachte ich, ich halte sie aktuell.

Heutzutage existiert eine viel einfachere Lösung im Zeitalter des Mountain Lion im Mono-D-Projekt

Einfach MonoDevelop (oder Xamarin Studio) installieren und der Installationsanleitung in fünf Minuten folgen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X