Make [was Re: SCons and gdc]

Iain Buclaw ibuclaw at ubuntu.com
Tue Oct 23 15:35:56 PDT 2012


On 23 October 2012 22:58, H. S. Teoh <hsteoh at quickfur.ath.cx> wrote:
> On Tue, Oct 23, 2012 at 11:35:29PM +0200, Rob T wrote:
> [...]
>> Currently I am trying very hard to get rid of Make, really I don't
>> have much choice because AFAIK there's no easy way to get a useful
>> dependency list out of gdc or dmd that can be used with Make. There
>> is an option to produce a dependency list, but the output seems to
>> be useless because it does not include full path for some of the
>> dependecies, and the format is wrong to boot (needs Make to run an
>> editor to clean up), and cgd 4.7 has a bug with producing the output
>> rendering it totally useless (I'll try and report this bug on the
>> tracker, now that I have an account).
>
> SCons can figure out the dependencies without needing to be told
> explicitly. That is, if it's working correctly. Currently I do have
> multi-file D projects, but they haven't grown into multi-folder projects
> yet, so admittedly I don't have too much experience in that area.
>
>
>> Given the significant problems I'm experiencing, I really wonder how
>> anyone is building anything of significance in D? Since it appears
>> that significant apps are being built, I figure I'm trying to do
>> things in a C/C++ way when I am expected to do things in a different
>> "D way".
> [...]
>
> Well, dmd tends to work best when given the full list of D files, as
> opposed to the C/C++ custom of per-file compilation. (It's also faster
> that way---significantly so.) The -op flag is your friend when it comes
> to using dmd with multi-folder projects.
>
> And I just tried: gdc works with multiple files too. I'm not sure how
> well it handles a full list of D files, though, if some of those files
> may not necessarily be real dependencies.
>
>

To compile multiple modules into one object file, you need to specify
'-o', else it compiles one-at-a-time.  Otherwise it should work pretty
well...

-- 
Iain Buclaw

*(p < e ? p++ : p) = (c & 0x0f) + '0';


More information about the Digitalmars-d mailing list