Dub / Derelict confusion
Mike Parker via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Nov 19 02:07:55 PST 2014
On 11/19/2014 6:12 PM, Paul wrote:
> I would like to create a simple program using SDL. I've read this page
> http://dblog.aldacron.net/derelict-help/using-derelict/ and this one
> http://code.dlang.org/about and decided that using 'dub' would be the
> sensible option for a beginner so I downloaded the dub executable and
> put it in the same directory as my source file 'test.d'.
It doesn't need to be in the same directory as the source. Put it
somewhere on the global path.
>
> As per the example at the above url, I created a dub.json file in the
> same directory with contents as so:
>
> "dependencies": {
> "derelict-sdl2":"~>1.0.0",
> "derelict-gl3":"~master",
> }
You shouldn't be depending on ~master for anything anymore. The newest
version of dub will complain about dependencies on git branches. For
derelict-gl3, you can use >=1.0.0.
>
> If I have the relevant import statements in test.d, am I right in
> thinking I can use dub to build my program (not just download and build
> the derelict libraries)?
Yes, assuming that your dub.json is properly configured.
> The command dub build test.d gives me a 'failed
> to load package' error.
That's the right command, but the wrong parameters. If you are going to
pass a parameter to the build command, it should be the name of a dub
package, not the name of a file. Typically, you don't need to pass it a
package name if all is properly configured.
Try this:
1 -- make sure dub is on the global path.
2 --
mkdir dubtest
cd dubtest
dub init
You should see the following output in side the dubtest dir
-dub.json
---source
-----app.d
3 --
Edit dub.json and add the following dependencies:
"derelict-sdl2":"~>1.0.0",
"derelict-gl3":">=1.0.0"
4 --
Edit app.d to look like this:
import derelict.opengl3.gl3,
derelict.sdl2.sdl;
void main()
{
DerelictGL3.load();
DerelictSDL2.load();
import std.stdio : writeln;
writeln( "Success!");
}
5--
Execute the following command:
dub
You'll see some messages about fetching and building the Derelict
packages and then, assuming you have SDL2 and OpenGL on your system
library search path, you should see it print "Success!". Otherwise,
you'll get a DerelictException of one kind or another.
Note that I didn't give dub a command option. Executing 'dub' with no
options will cause it to build and run whatever package is in the
current directory. By default, dub will look for source/app.d if you
don't configure something differently in dub.json.
Executing 'dub build' will build the executable, but will not run it.
More information about the Digitalmars-d-learn
mailing list