May be a simple dub answer if my question even makes sense?

WhatMeWorry via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sat Sep 24 09:51:47 PDT 2016


On Saturday, 24 September 2016 at 06:05:11 UTC, Mike Parker wrote:
> On Saturday, 24 September 2016 at 02:33:22 UTC, WhatMeWorry 
> wrote:
>
>>
>> I see that dub has all the .d import files already placed in
>> C:\Users\Me\AppData\Roaming\dub\packages\derelict-gl3-1.0.19\derelict-gl3\source\derelict\opengl3
>>
>> and 
>> C:\Users\Me\AppData\Roaming\dub\packages\derelict-glfw3-3.1.0\derelict-glfw3\source\derelict\glfw3
>>
>> which should have all the definitions.  Is their an elegant 
>> way that I can tell dub to where these definitions? Or do I 
>> just have to brute force all the -I paths?
>
> You don't have to specify the paths of dependencies. dub knows 
> where they are and will make sure the compiler knows, too.
>
>>
>> I assume there is a slick way of specifying this because what 
>> happens when say glfw3-3.1.0 gets bumped up to 3.1.1?
>
> Then you execute 'dub upgrade' in the directory where your dub 
> configuration resides. As long as you have the version of each 
> dependency specified properly, it will do the right thing (TIP: 
> use ~>x.x.x for versions, rather than >=x.x.x -- the former 
> will restrict you to patch-level upgrades, e.g. 3.1.0 -> 3.1.1 
> and never 3.2, while the latter would happily go from 3.x -> 
> 4.0 if it's available, often a breaking change).
>
> Did you import the derelict modules you're using in your app.d?

Well, my dub.sdl file has:

dependency "derelict-gl3" version="~>1.0.19"
dependency "derelict-glfw3" version="~>3.1.0"

My app.d has:

module app;
import common.derelict_libraries;

and derelict_libraries.d has:

module derelict_libraries;
import derelict.glfw3.glfw3;
import derelict.opengl3.gl3;


It's fine to import other imports, Right?

I am trying to make a portable dub/dmd build environment on a 
flash drive for PC
So the dub project is currently on a flash drive that is assigned 
the letter E:
Naturally, this could change if the flash drive were moved to 
another PC.  did have to write a little shim code to add 
environment["DFLAGS"] = r"-I..\";  so that the app.d import could 
find the derelict_libraries.d relative to the project directory. 
Like so:

E:\projects\01_01_hello_window
E:\projects\01_01_hello_window\source\app.d
E:\projects\common\derelict_libraries.d


So to summarize things, the derelict imports are fine.

But how does dub tell dmd that it should looking for opengl 
imports at:

C:\Users\Kyle\AppData\Roaming\dub\packages\derelict-gl3-1.0.15\source\derelict\opengl3

and glfw3's imports at:

C:\Users\Kyle\AppData\Roaming\dub\packages\derelict-glfw3-3.1.0\derelict-glfw3\source\derelict\glfw3

I'm desperately trying to avoid hard coding these paths. Because 
I want to use a lot more dub packages in the future.





More information about the Digitalmars-d-learn mailing list