2010-03-07 21 views
11

J'ai été intéressé par "D" depuis quelques années maintenant et j'ai récemment décidé de commencer à jouer avec. J'ai été capable de saisir les bases assez facilement, j'aime les fonctionnalités de base de la langue et plus je lis à ce sujet, plus je suis impressionné.Comment démarrer avec D sur Mac OS X 10.6 (Snow Leopard)

Maintenant, je suis très intéressé par l'écriture d'un serveur d'applications Web personnalisé en tant que projet hobby et je veux que ce soit un simple binaire, en utilisant des bibliothèques liées dynamiquement pour les applications web actuelles. Je crois que D est le langage parfait pour cette entreprise.

Il y a seulement un gros problème ... au cours des derniers jours, j'ai été complètement incapable de faire fonctionner n'importe quel type d'IDE. Je peux compiler et exécuter tout simplement bien sur la ligne de commande, mais tout ce que j'essaie dans l'un des IDE disponibles (Code :: Blocks, eclipse + descente, Xcode avec D plugin, et même les fenêtres D-IDE fonctionnant dans VirtualBox sous Windows XP Pro) la seule chose qui arrive toujours est:

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

Après deux jours d'essayer des choses différentes et suivant des tutoriels, cela est vraiment obtenir sur mes nerfs. Je veux apprendre à utiliser efficacement D, mais j'ai besoin d'une chaîne d'outils confortable qui inclut l'achèvement du code dans l'éditeur si je veux garder ma santé mentale, ce que je fais évidemment.

[edit: l'accent ajouté à la vraiment peu importante]

Est-ce qu'il ya quelqu'un qui peut me aider à mettre en place éclipse ou (de préférence) NetBeans (mais aucun plugin semble être publiquement disponible) pour me donner des capacités de compilation et d'exécution dans l'EDI, avec l'achèvement du code? sur mon Mac, sous Mac OS X 10.6?

Je veux utiliser les bibliothèques phobos (et à cet effet un compilateur 2.0) mais je ne suis pas vraiment si son dmd ou gdmd (gdcmac).

[plus]

je crois que nous pouvons supposer que mon DMD installation du compilateur est en ordre, car il fonctionne de la ligne de commande. Je ne veux juste pas l'utiliser depuis la ligne de commande parce que c'est fastidieux. La question est sur le point et IDE, les travaux du compilateur, son juste IDEs qui ne sera pas

Répondre

11

Eh bien, le bougre persistant en moi ne pouvait pas laisser le problème seul et je l'ai finalement mis au travail.

Les composants nécessaires pour obtenir tout travail sous Mac OS X 10.6 sont:

  • DMD compilateur
  • Eclipse "Galileo" (version 3.4)
  • Descente
  • DSSS
  • une passer à /usr/etc/rebuild/default
  • un nouveau fichier j'ai piraté ensemble /usr/etc/rebuild/macosx.conf
  • paramètres globaux et par projet pour Eclipse

Après avoir suivi ces instructions, vous aurez Eclipse capable de faire la complétion de code sur vos projets D et vous serez en mesure de construire/exécuter depuis l'EDI ainsi .

Les étapes réelles pour le rendre opérationnel sont les suivantes.

  1. installez les digitalmars dmd 2.0 compilateur
    1. télécharger la distribution binaire de digitalmars.com (direct link to 2.041)
    2. décompressez le fichier téléchargé dans ~/somefolder (qui a créé un ~/somefolder/dossier dmd2 pour moi que je vais utiliser pendant toute la durée de cet exemple.)
    3. dans le terminal (/Applications/Utilities/Terminal.app) déplacer les fichiers vers leur destination
    4. sudo mv ~/somefolder/dmd2/osx/bin/* /usr/bin/ entrez votre mot de passe quand on lui demande
    5. déplacer le dmd.conf simplement copié à son emplacement: 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. utiliser votre éditeur de texte favori pour modifier /etc/dmd.conf pour contenir les éléments suivants:

[Environnement]

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

  1. Téléchargez et installez votre favori version Mac OS X de l'éclipse sur les trente-six centaines disponibles à http://www.eclipse.org/downloads/ (j'ai choisi une version de cacao pour c/C++)
  2. Installer Descente (presque selon the normal instructions in the wiki)
    1. d'Eclipse (ne vous embêtez pas en cours d'exécution en tant que root)
    2. goto Help ->Install New Software dans la barre de menu. (wtf cela fait-il dans le menu Help?!)
    3. copier/coller http://downloads.dsource.org/projects/descent/update-site dans le champ URL.
    4. suivez les instructions à l'écran pour terminer l'installation.
  3. installer dsss from sourceforge (direct link to .dmg)
    1. utiliser le package d'installation sur l'image disque comme les autres. Créez un fichier /usr/etc/rebuild/macosx.conf et collez l'extrait de code suivant.(Et sauver, 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. changer le fichier /usr/etc/rebuild/default à lire: profile=dmd-macosx
    1. Configuration d'Eclipse pour l'exécution du code
  2. Dans les préférences d'éclipse globale na vigate tp D =>Build Path =>User Libraries
    1. cliquez New, tapez "std", appuyez sur OK sélectionnez l'entrée nouvellement créée, cliquez sur Add Directory
      • Accédez à /usr/dmd2/src/phobos/std et l'ajouter.
    2. Mettre en place projet Eclipse. Vous devez faire manuellement pour chaque projet D vous allez faire
    3. Créer un nouveau projet avec l'assistant « D => D Project » (grâce à la descente)
    4. Allez dans les propriétés du projet (à droite cliquez sur projet dans l'Explorateur de projet et choisissez Propriétés)
    5. Dans la liste de gauche, sélectionnez D Build Path et, dans le panneau qui s'affiche, choisissez l'onglet Include Path.
    6. Cliquez sur le bouton Add Library et choisissez std dans la deuxième page de l'assistant.
    7. Configurer l'outil de construction extarnal
    8. Aller à External tools configurations... (dans le menu déroulant dans le petit bouton vert avec la boîte à outils en face de celui-ci dans la construction/run/debug toolbar thingy)
    9. Dans la liste à gauche faites un clic droit et choisissez ProgramNew dans le menu contextuel.
    10. donner votre config un nom décent comme « Construire avec DSSS » et définissez les options suivantes:
      • Lieu: /usr/bin/dsss
      • Répertoire de travail: chemin complet vers le répertoire avec votre fichier dsss.conf pour le projet (si vous ne disposez pas d'un fichier dsss.conf créer un sur la ligne de commande: dsss genconfig)
      • Arguments: build (ou reconstruire, ou propre, ou ...)
    11. répétez les étapes 2 et 3 ci-dessus pour autant d'options de build/run que nécessaire.

Félicitations, tout devrait fonctionner maintenant.

Si pour une raison quelconque cela ne fonctionne pour vous, laissez-moi savoir pas et je serai heureux de savoir où il a mal tourné et vous aider à le faire fonctionner.S'il y a un moyen meilleur ou plus simple, j'aimerais aussi le savoir.

+0

Assez triste que je n'ai pas eu une meilleure réponse que ce gâchis ici. – Kris

0

(Vous pouvez utiliser Phobos sur D 1.0. En tout cas ...)

Où avez-vous installé le Phobos et druntime têtes?

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

En général, je copie-les dans /usr/include.

(Aussi, essayez de modifier dmd.conf d'utiliser le chemin absolu:

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

)

+0

je l'ai déjà édité le dmd.conf d'avoir des chemins absolus (DFLAGS = -I/usr/dmd2/src/phobos -I/usr/dmd2/src/druntime/import -LL/usr/dmd2/lib) J'ai aussi symétrisé les binaires dans/usr/bin _and_ ajouté tous les chemins associés à dmd2 dans mon environnement PATH (bash profil), malheureusement ne fait aucune différence. – Kris

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

indique clairement qu'il ne peut pas trouver les bibliothèques correctement. Donc, la première question est comment votre dmd.conf est mis en place. Vous devez vous assurer qu'il pointe vers les endroits appropriés pour src/phobos, src/druntime/import, et osx/lib - partout où vous les mettez.Personnellement, je mets le code dmd dans un sous-dossier de home et n'essaie pas de l'installer dans/usr, mais les instructions vous disent de les installer par défaut, donc ça devrait marcher.

En supposant que votre fichier dmd.conf semble correct, la situation la plus probable est qu'il utilise en fait le mauvais fichier dmd.conf. Les instructions sur le site de mars numérique (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/ 

Je pense que vous avez mis dmd.conf dans/etc et ont été en train de modifier celui-là mais la gauche dmd.conf originale

/where_dmd_is/dmd2/osx/bin/ 

Certainement, cela m'est arrivé une fois ou deux. Dans tous les cas, la première chose dont vous devez vous assurer, c'est que le fichier dmd.conf que vous éditez est celui que dmd utilise (donc assurez-vous que les emplacements où dmd regarde en premier n'ont pas de dmd. conf), et la deuxième chose dont vous devez vous assurer, c'est que les chemins dans votre fichier dmd.conf pointent correctement vers l'emplacement de la commande dmd. Si ces deux choses sont correctes, alors dmd devrait trouver les bibliothèques correctement. Sur une note de côté, je voudrais souligner, cependant, étant donné votre commentaire sur vouloir utiliser les bibliothèques partagées, c'est que les bibliothèques partagées ne fonctionnent pas correctement avec D2 en ce moment (je ne sais pas si elles fonctionnent avec D1 depuis que je n'utilisez pas D1 - je suppose qu'ils ne le font pas). Il y a eu des discussions à ce sujet sur le groupe de discussion D (http://www.digitalmars.com/NewsGroup.html), vous pouvez donc y jeter un coup d'œil. C'est quelque chose sur le radar et est examiné, mais ne fonctionne pas encore complètement. En outre, vous pouvez consulter le groupe de discussion pour obtenir de l'aide sur les problèmes liés au D. C'est probablement le meilleur endroit à demander maintenant.

+0

les bibliothèques peuvent être statiques au lieu de dynamiques, donc ce n'est pas un problème et si cela devient un problème, je pourrais très probablement le réparer si on me donnait un environnement de travail décent quand même. Je n'ai pas gardé les fichiers d'origine car je pourrais facilement les décompresser à nouveau, il n'y a qu'un seul fichier dmd.conf sur mon système et c'est dans/etc/'sudo find/-name" dmd.conf "-print' m'a dit ça. Et je me suis de nouveau assuré que tous les chemins sont correctement configurés. – Kris

1

Si c'est une question d'un IDE, dans la mesure où l'éclipse va, je crois que le plug-in à regarder est la descente: http://www.dsource.org/projects/descent

Malheureusement, je n'ai pas encore essayé moi-même, donc je ne sais pas savoir à quel point c'est bon. Selon sa page wiki, il est principalement destiné à D1 mais supporte D2 au moins dans une certaine mesure.

+0

J'ai installé eclipse et la descente, avec dsss. l'achèvement de code ne fonctionne pas pour n'importe quoi dans la bibliothèque std (phobos) et la compilation ne fonctionnera pas du tout même si la vue de compilation et les navigateurs de type fonctionnent. J'ai regardé les wikis et tout, mais il n'y a pas de soluce qui finit par avoir un IDE de travail, c'est pourquoi j'ai demandé ici – Kris

1

Si vous voulez démarrer rapidement (aka Double-cliquez sur installer): D for Xcode

Exigences:

  • Xcode

Voilà. Installe le dernier compilateur dmd, de sorte qu'il fonctionne dans le terminal trop etc

+0

en essayant que maintenant, la version (s) de D pour Xcode trouvé lorsque j'ai posé cette question n'a pas fonctionné, ici, j'espère que c'est mieux maintenant. – Kris

+0

principalement les mêmes problèmes que j'avais auparavant, l'achèvement du code ne fonctionne pas vraiment (juste les mots clés du fichier actuel), pas de support de débogage (les points d'arrêt ne fonctionnent pas) etc – Kris

+0

Ah, désolé, je me suis devancé. Oui, le débogage correct et le support de l'achèvement du code complet sont manquants. Ceci est mentionné dans les "problèmes connus". J'ai le sentiment que c'est le "bord" du développement actuel. D est en alpha, après tout. Peut-être que vous pouvez apporter ces fonctionnalités vous-même? * nudge nudge *:) – 0scar

1

Comme je continue à voir cette question revenant dans mes résultats de recherche de temps en temps, je me suis dit que je garderais cela pertinent.

De nos jours; À l'époque Mountain Lion, une solution beaucoup plus facile existe dans le Mono-D project

Il suffit d'installer MonoDevelop (ou Xamarin Studio) et suivez les five minute installation manual