[dub] Size of executable
Chris via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Nov 28 03:30:22 PST 2014
On Thursday, 27 November 2014 at 17:08:00 UTC, CraigDillabaugh
wrote:
> On Thursday, 27 November 2014 at 14:14:50 UTC, Chris wrote:
>> On Thursday, 27 November 2014 at 13:59:23 UTC, CraigDillabaugh
>> wrote:
>>> On Thursday, 27 November 2014 at 13:56:19 UTC, Chris wrote:
>>>> On Thursday, 27 November 2014 at 12:29:03 UTC, Gary
>>>> Willoughby wrote:
>>>>> On Thursday, 27 November 2014 at 09:33:49 UTC, Chris wrote:
>>>>>> I usually use dub to create and build projects. I built
>>>>>> one of the projects with dub and then by hand with dmd[1]
>>>>>> passing all the files etc. Turned out that the executable
>>>>>> built with dub was 1.4 MB whereas the one built by hand
>>>>>> was only 807 kB. Why is that?
>>>>>
>>>>> dub compiles and links every file in the source folder
>>>>> whether it's used or not. Whereas with dmd or rdmd you only
>>>>> compile and link the files you actually use.
>>>>
>>>> I compiled the exact same files. I excluded those I didn't
>>>> need in the dub configuration like so:
>>>>
>>>> "excludedSourceFiles": [...]
>>>>
>>>> But dub's executable is bigger.
>>>
>>> When you build with dub it should print out (if I remember
>>> correctly, its been a little while) the command it uses to
>>> build your code. Is there any difference between that
>>> command and your 'by hand' version?
>>
>> dub says:
>>
>> Compiling using dmd...
>> Linking...
>>
>> I have the exact same setting, I think. I don't build for
>> release with either method.
>>
>> dmd file1.d file2.d file3.d ...
>>
>> (dub compiles the same files, no release build)
>
> I am sure there is some way to get it to print out exactly what
> it is doing. I've done it before when trying to figure out some
> compilation issues ... unfortunately it was a while ago and the
> machine I am at now doesn't have dub (or D for that matter)
> installed.
>
> Maybe you need to give the the dub -v (--verbose) option. Type
> 'dub help' to check - again I can't do that right here.
Nope, --verbose doesn't tell me anything useful in this regard.
Only stuff like
Refreshing local packages (refresh existing: true)...
Looking for local package map at
/var/lib/dub/packages/local-packages.json
...
I added a lot to the project yesterday, and still, the "pure"
dmd-compiled version is 1.9 MB whereas the dub-compiled version
is 3.5 MB. There is absolutely nothing in dub.json that links to
anything else.
Now, I've just created an empty test project with
$ dub init size
The executable is 940.5 kB
Then
$ dmd source/app.d -ofother
The executable is 548.0 kB
Try it yourself.
More information about the Digitalmars-d-learn
mailing list