Thread overview
Verbose compile
Oct 14, 2003
Gisle Vanem
Dec 16, 2003
grammer
Jun 08, 2004
Lars M.
October 14, 2003
I just discovered the dmc '-v2' switch and it's very
handy some times to see all the headers involved in a
compile. E.g.

dmc -mn -DWINDOWS -I. -v2 -oDMC_obj/utils.obj -c utils.c
scppn -mn -DWINDOWS -I. -v2 utils.c -oDMC_obj/utils.obj
Digital Mars C/C++ Compiler Version 8.35.10n
Copyright (C) Digital Mars 2000-2003.  All Rights Reserved.
Written by Walter Bright
www.digitalmars.com
 'utils.c'
  '.\config.h'
  'd:\prog\dmc\bin\..\include\stdio.h'
  'd:\prog\dmc\bin\..\include\stdlib.h'
   'd:\prog\dmc\bin\..\include\heapstat.h'
  'd:\prog\dmc\bin\..\include\string.h'
  'd:\prog\dmc\bin\..\include\sys/types.h'
  'd:\prog\dmc\bin\..\include\limits.h'
  'd:\prog\dmc\bin\..\include\sys/utime.h'
   'd:\prog\dmc\bin\..\include\utime.h'
    'd:\prog\dmc\bin\..\include\sys\types.h'
  'd:\prog\dmc\bin\..\include\errno.h'
  'd:\prog\dmc\bin\..\include\fcntl.h'
  'd:\prog\dmc\bin\..\include\assert.h'
  'd:\prog\dmc\bin\..\include\signal.h'
  'wget.h'
   'sysdep.h'
    'd:\prog\dmc\bin\..\include\time.h'
    'd:\prog\dmc\bin\..\include\sys/stat.h'
    '.\mswindows.h'
     'd:\prog\dmc\bin\..\include\windows.h'
      'd:\prog\dmc\bin\..\include\win32\scdefs.h'
      'd:\prog\dmc\bin\..\include\win32\WINDOWS.H'
       'd:\prog\dmc\bin\..\include\excpt.h'
       'd:\prog\dmc\bin\..\include\stdarg.h'
       'd:\prog\dmc\bin\..\include\windef.h'
        'd:\prog\dmc\bin\..\include\win32\WINDEF.H'
         'd:\prog\dmc\bin\..\include\winnt.h'
          'd:\prog\dmc\bin\..\include\win32\WINNT.H'
           'd:\prog\dmc\bin\..\include\ctype.h'

Way to go Walter!

Only wish the paths where all canonical.

-- 
Gisle V.

# rm /bin/laden
/bin/laden: Not found


December 16, 2003
"Gisle Vanem" <giva@users.sourceforge.net> wrote in message news:bmgrr5$2a6g$1@digitaldaemon.com...
> I just discovered the dmc '-v2' switch and it's very
> handy some times to see all the headers involved in a
> compile. E.g.
>
> dmc -mn -DWINDOWS -I. -v2 -oDMC_obj/utils.obj -c utils.c
> scppn -mn -DWINDOWS -I. -v2 utils.c -oDMC_obj/utils.obj
> Digital Mars C/C++ Compiler Version 8.35.10n
> Copyright (C) Digital Mars 2000-2003.  All Rights Reserved.
> Written by Walter Bright
> www.digitalmars.com
>  'utils.c'
>   '.\config.h'
>   'd:\prog\dmc\bin\..\include\stdio.h'
>   'd:\prog\dmc\bin\..\include\stdlib.h'
>    'd:\prog\dmc\bin\..\include\heapstat.h'
>   'd:\prog\dmc\bin\..\include\string.h'
>   'd:\prog\dmc\bin\..\include\sys/types.h'
>   'd:\prog\dmc\bin\..\include\limits.h'
>   'd:\prog\dmc\bin\..\include\sys/utime.h'
>    'd:\prog\dmc\bin\..\include\utime.h'
>     'd:\prog\dmc\bin\..\include\sys\types.h'
>   'd:\prog\dmc\bin\..\include\errno.h'
>   'd:\prog\dmc\bin\..\include\fcntl.h'
>   'd:\prog\dmc\bin\..\include\assert.h'
>   'd:\prog\dmc\bin\..\include\signal.h'
>   'wget.h'
>    'sysdep.h'
>     'd:\prog\dmc\bin\..\include\time.h'
>     'd:\prog\dmc\bin\..\include\sys/stat.h'
>     '.\mswindows.h'
>      'd:\prog\dmc\bin\..\include\windows.h'
>       'd:\prog\dmc\bin\..\include\win32\scdefs.h'
>       'd:\prog\dmc\bin\..\include\win32\WINDOWS.H'
>        'd:\prog\dmc\bin\..\include\excpt.h'
>        'd:\prog\dmc\bin\..\include\stdarg.h'
>        'd:\prog\dmc\bin\..\include\windef.h'
>         'd:\prog\dmc\bin\..\include\win32\WINDEF.H'
>          'd:\prog\dmc\bin\..\include\winnt.h'
>           'd:\prog\dmc\bin\..\include\win32\WINNT.H'
>            'd:\prog\dmc\bin\..\include\ctype.h'
>
> Way to go Walter!
>
> Only wish the paths where all canonical.
>
> -- 
> Gisle V.
>
> # rm /bin/laden
> /bin/laden: Not found

I just realized that the dmc -d option produces a .dep file that lists all the dependencies of a compiled file. The real boon is that the digital mars make program expands $(filename) to the contents of the file. I don't know if this is a common feature of make programs because it was only mentioned breifly in the compiler's documentation. Anyway, the end result is that the makefiles almost write themselves.

file.obj: ($file.dep) file.cpp
    dmc file.cpp -d -c

The above will rebuild the target when the cpp file changes or when any .h file listed in the .dep file changes. And of course, the .dep file gets regenerated whenever the .cpp file or any .h file is modified. Perfect :)


June 08, 2004
You are right, it is an extremely useful feature. I have just downloaded
DM - it is my first command line environment (I use the free version), and
so I took a look in the "bin" folder, discovered "make.exe" and read several
make tutorials - all just outline the structure of a make file, not how to
use them effectively!

None mentioned any shortcut like this! You don have to write

file.obj: $(file.dep) file.cpp

but

file.obj: ($file.dep)

seems to be enough. I don't know what happens when file.dep does not exist, maybe no dependencies will be "filled in", and that causes make to rebuild the target - and when make is invoked the next time, it fills in the required dependencies.

I have no idea how to effectively program in a command-line environment (although DM does not come with too many .exes, there is MinGW for example, which does), can you recommend any step-by-step tutorials for newbies like me?

-Lars
"grammer" <pgrammer_81@hotmail.com> schrieb im Newsbeitrag
news:brndmo$1dj2$1@digitaldaemon.com...
>
> "Gisle Vanem" <giva@users.sourceforge.net> wrote in message news:bmgrr5$2a6g$1@digitaldaemon.com...
> > I just discovered the dmc '-v2' switch and it's very
> > handy some times to see all the headers involved in a
> > compile. E.g.
> >
> > dmc -mn -DWINDOWS -I. -v2 -oDMC_obj/utils.obj -c utils.c
> > scppn -mn -DWINDOWS -I. -v2 utils.c -oDMC_obj/utils.obj
> > Digital Mars C/C++ Compiler Version 8.35.10n
> > Copyright (C) Digital Mars 2000-2003.  All Rights Reserved.
> > Written by Walter Bright
> > www.digitalmars.com
> >  'utils.c'
> >   '.\config.h'
> >   'd:\prog\dmc\bin\..\include\stdio.h'
> >   'd:\prog\dmc\bin\..\include\stdlib.h'
> >    'd:\prog\dmc\bin\..\include\heapstat.h'
> >   'd:\prog\dmc\bin\..\include\string.h'
> >   'd:\prog\dmc\bin\..\include\sys/types.h'
> >   'd:\prog\dmc\bin\..\include\limits.h'
> >   'd:\prog\dmc\bin\..\include\sys/utime.h'
> >    'd:\prog\dmc\bin\..\include\utime.h'
> >     'd:\prog\dmc\bin\..\include\sys\types.h'
> >   'd:\prog\dmc\bin\..\include\errno.h'
> >   'd:\prog\dmc\bin\..\include\fcntl.h'
> >   'd:\prog\dmc\bin\..\include\assert.h'
> >   'd:\prog\dmc\bin\..\include\signal.h'
> >   'wget.h'
> >    'sysdep.h'
> >     'd:\prog\dmc\bin\..\include\time.h'
> >     'd:\prog\dmc\bin\..\include\sys/stat.h'
> >     '.\mswindows.h'
> >      'd:\prog\dmc\bin\..\include\windows.h'
> >       'd:\prog\dmc\bin\..\include\win32\scdefs.h'
> >       'd:\prog\dmc\bin\..\include\win32\WINDOWS.H'
> >        'd:\prog\dmc\bin\..\include\excpt.h'
> >        'd:\prog\dmc\bin\..\include\stdarg.h'
> >        'd:\prog\dmc\bin\..\include\windef.h'
> >         'd:\prog\dmc\bin\..\include\win32\WINDEF.H'
> >          'd:\prog\dmc\bin\..\include\winnt.h'
> >           'd:\prog\dmc\bin\..\include\win32\WINNT.H'
> >            'd:\prog\dmc\bin\..\include\ctype.h'
> >
> > Way to go Walter!
> >
> > Only wish the paths where all canonical.
> >
> > -- 
> > Gisle V.
> >
> > # rm /bin/laden
> > /bin/laden: Not found
>
> I just realized that the dmc -d option produces a .dep file that lists all the dependencies of a compiled file. The real boon is that the digital
mars
> make program expands $(filename) to the contents of the file. I don't know if this is a common feature of make programs because it was only mentioned breifly in the compiler's documentation. Anyway, the end result is that
the
> makefiles almost write themselves.
>
> file.obj: ($file.dep) file.cpp
>     dmc file.cpp -d -c
>
> The above will rebuild the target when the cpp file changes or when any .h file listed in the .dep file changes. And of course, the .dep file gets regenerated whenever the .cpp file or any .h file is modified. Perfect :)
>
>