I've been interested in "D" for a couple of years now and recently decided to start actually playing with it. I've been able to grasp the basics quite easily, I love the basic feature set of the language and the more I read about it, the more impressed I get.
Now, I'm very interested in writing a custom web application server as a hobby project and I want it to be a simple binary, using dynamically linked libraries for the actual web applications. I believe D to be the perfect language for this venture.
There is only one big problem... over the past couple of days, I have been completely unable to get any kind of IDE setup working. I can compile and run everything just fine on the command line, but everything I try in any of the IDE's available (Code::Blocks, eclipse+descent, Xcode with D plugin, and even the windows D-IDE running in VirtualBox on Windows XP Pro) the only thing that ever happens is:
object.d: Error: module object cannot read file 'object.d'
After two days of trying different things and following tutorials, this is really getting on my nerves. I want to learn to use D efficiently, but I need some comfy tool chain that includes code completion in the editor if I want to keep my sanity, which I obviously do.
[edit:added emphasis to the really important bit]
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?
I want to use the phobos libraries (and therefor a 2.0 compiler) but I don't really care if its dmd or gdmd (gdcmac).
[addition]
I believe we can assume that my dmd compiler installation is in order because it works from the commandline. I just don't want to use it from the commandline because its tedious. The question is about and IDE, the compiler works, its just IDEs that won't
You can upgrade to OS X El Capitan (version 10.11) from OS X Snow Leopard (version 10.6) or later on any of the following Mac models. Your Mac also needs at least 2GB of memory and 8.8GB of available storage space.
Well, the persistent bugger in me could not leave the problem alone and I finally got it to work.
The required components to get it all working on Mac OS X 10.6 are:
/usr/etc/rebuild/default
/usr/etc/rebuild/macosx.conf
After following these instructions you'll have Eclipse able to do code completion on your D projects and you'll be able to build/run from within the IDE as well.
The actual steps to get it operational are as follows.
~/somefolder
(that created a ~/somefolder/dmd2 folder for me which I'll use for the duration of this example.)/Applications/Utilities/Terminal.app
) move the files to their destinationsudo mv ~/somefolder/dmd2/osx/bin/* /usr/bin/
enter your login password when askedsudo mv /usr/bin/dmd.conf /etc/dmd.conf
sudo mv ~/somefolder/dmd2/osx/lib/* /usr/lib/
sudo mv ~/somefolder/dmd2 /usr/
/etc/dmd.conf
to contain the following:[Environment]
DFLAGS=-I/usr/dmd2/src/phobos -I/usr/dmd2/src/druntime/import -L-L/usr/lib
Help
-> Install New Software
from the menu bar. (wtf does that do in the Help
menu?!)http://downloads.dsource.org/projects/descent/update-site
into the url field./usr/etc/rebuild/macosx.conf
and paste the following snippet into it. (and save, 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
/usr/etc/rebuild/default
file to read: profile=dmd-macosx
D
=> Build Path
=> User Libraries
New
, type "std", press OK
select the newly created entry, click Add Directory
/usr/dmd2/src/phobos/std
and add it.D Build Path
and in the panel that appears choose the Include Path
tab.Add Library
button and choose std
in the second page of the wizard.External tools configurations...
(from the dropdown in the little green play button with the toolbox in front of it in the build/run/debug toolbar thingy)Program
and choose New
from the context menu./usr/bin/dsss
dsss genconfig
)build
(or rebuild, or clean, or...)Congratulations, everything should work now.
If for some reason this does not work for you, let me know and I'll be happy to figure out where it went wrong and help you to get it working. If there's a better or simpler way, I'd love to know about it as well.
object.d: Error: module object cannot read file 'object.d'
clearly indicates that it can't find the libraries properly. So, the first question is how your dmd.conf is set up. You need to make sure that it's pointing to the correct places for src/phobos, src/druntime/import, and osx/lib - wherever you put those. Personally, I put the dmd code in a subfolder of home and don't try and install it in /usr, but the instructions do tell you to install them there as the default, so it should work.
Assuming that your dmd.conf looks okay, the most likely situation is that it's actually using the wrong dmd.conf. Per the instructions on the digital mars site ( 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/
My guess is that you put dmd.conf in /etc and have been editing that one but left the original dmd.conf in
/where_dmd_is/dmd2/osx/bin/
Certainly, I've had that happen to me a time or two. In any case, the first thing that you need to make sure of is that the dmd.conf that you're editing is the one that dmd is using (so make sure that the places where dmd looks first don't have a dmd.conf), and the second thing that you need to make sure of is that the paths in your dmd.conf correctly point to where the dmd stuff is. If those two things are correct, then dmd should find the libraries correctly.
On a side note, I would point out, however, given your comment about wanting to use shared libraries is that shared libraries don't work correctly with D2 right now (I have no idea whether they work with D1 since I don't use D1 - I suspect that they don't though). There have been discussions about it on the D newsgroup ( http://www.digitalmars.com/NewsGroup.html ), so you can look there. It is something on the radar and is being looked into, but doesn't fully work yet. Also, you can look to the newsgroup for further help on D-related issues. It's probably the best place to ask right now.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With