Dub / Derelict confusion
Paul via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Wed Nov 19 05:24:46 PST 2014
On Wednesday, 19 November 2014 at 10:07:56 UTC, Mike Parker wrote:
> 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.
Thank you Mike, that works perfectly and pretty easy when you
know how - something else that is making D feel very comfortable!
For anyone else reading this... app.d is in the /source directory
created after executing 'dub init' and 'dub' or 'dub build' needs
to be run from the project file (the directory containing the
dub.json file and /source subdirectory). Both pretty obvious but
just in case ;)
Thanks John, your tip about dub.json noted!
More information about the Digitalmars-d-learn
mailing list