Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.arch.embedded > #28361

Re: Makefile or not?

From David Brown <david.brown@hesbynett.no>
Newsgroups comp.arch.embedded
Subject Re: Makefile or not?
Date 2018-12-03 11:06 +0100
Organization A noiseless patient Spider
Message-ID <pu2v7a$8m3$1@dont-email.me> (permalink)
References <pu2orv$702$1@dont-email.me>

Show all headers | View raw


On 03/12/18 09:18, pozz wrote:
> What do you really use for embedded projects? Do you use "standard"
> makefile or do you rely on IDE functionalities?
> 
> Nowadays every MCU manufacturers give IDE, mostly for free, usually
> based on Eclipse (Atmel Studio and Microchip are probably the most
> important exception).
> Anyway most of them use arm gcc as the compiler.
> 
> I usually try to compile the same project for the embedded target and
> the development machine, so I can speed up development and debugging. I
> usually use the native IDE from the manufacturer of the target and
> Code::Blocks (with mingw) for compilation on the development machine.
> So I have two IDEs for a single project.
> 
> I'm thinking to finally move to Makefile, however I don't know if it is
> a good and modern choice. Do you use better alternatives?
> 

I sometimes use the IDE project management to start with, or on very
small projects.  But for anything serious, I always use makefiles.  I
see it as important to separate the production build process from the
development - I need to know that I can always pull up the source code
for a project, do a "build", and get a bit-perfect binary image that is
exactly the same as last time.  This must work on different machines,
preferably different OS's, and it must work over time.  (My record is
rebuilding a project that was a touch over 20 years old, and getting the
same binary.)

This means that the makefile specifies exactly which build toolchain
(compiler, linker, library, etc.) are used - and that does not change
during a project's lifetime, without very good reason.

The IDE, and debugger, however, may change - there I will often use
newer versions with more features than the original version.  And
sometimes I might use a lighter editor for a small change, rather than
the full IDE.  So IDE version and build tools version are independent.

With well-designed makefiles, you can have different targets for
different purposes.  "make bin" for making the embedded binary, "make
pc" for making the PC version, "make tests" for running the test code on
the pc, and so on.


> My major reason to move from IDE compilation to Makefile is the test. I
> would start adding unit testing to my project. I understood a good
> solution is to link all the object files of the production code to a
> static library. In this way it will be very simple to replace production
> code with testing (mocking) code, simple prepending the testing oject
> files to static library of production code during linking.
> 

I would not bother with that.  I would have different variations in the
build handled in different build tree directories.

> I think these type of things can be managed with Makefile instead of IDE
> compilation.
> 
> What do you think?

It can /all/ be managed from make.

Also, a well-composed makefile is more efficient than an IDE project
manager, IME.  When you use Eclipse to do a build, it goes through each
file to calculate the dependencies - so that you re-compile all the
files that might be affected by the last changes, but not more than
that.  But it does this dependency calculation anew each time.  With
make, you can arrange to generate dependency files using gcc, and these
dependency files get updated only when needed.  This can save
significant time in a build when you have a lot of files.

Back to comp.arch.embedded | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Makefile or not? pozz <pozzugno@gmail.com> - 2018-12-03 09:18 +0100
  Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-03 11:06 +0100
    Re: Makefile or not? pozz <pozzugno@gmail.com> - 2018-12-03 12:13 +0100
      Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-03 12:57 +0100
        Re: Makefile or not? pozz <pozzugno@gmail.com> - 2018-12-03 23:29 +0100
    Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-03 15:39 +0000
      Re: Makefile or not? Theo Markettos <theom+news@chiark.greenend.org.uk> - 2018-12-03 15:49 +0000
        Re: Makefile or not? Dave Nadler <drn@nadler.com> - 2018-12-03 09:41 -0800
        Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-03 21:31 +0100
  Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-03 15:30 +0000
    Re: Makefile or not? DJ Delorie <dj@delorie.com> - 2018-12-03 14:05 -0500
      Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-03 19:36 +0000
        Re: Makefile or not? Clifford Heath <no.spam@please.net> - 2018-12-04 09:30 +1100
          Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-03 23:19 +0000
            Re: Makefile or not? raimond.dragomir@gmail.com - 2018-12-03 22:02 -0800
            Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-04 12:18 +0100
              Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-04 15:46 +0000
                Re: Makefile or not? Theo Markettos <theom+news@chiark.greenend.org.uk> - 2018-12-04 20:22 +0000
          Re: Makefile or not? Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2018-12-03 15:38 -0800
        Re: Makefile or not? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2018-12-04 21:25 -0500
          Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-05 03:22 +0000
          Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-05 09:06 +0100
        Re: Makefile or not? George Neuner <gneuner2@comcast.net> - 2018-12-05 11:37 -0500
        Re: Makefile or not? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2018-12-05 15:37 -0500
          Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-05 22:34 +0000
            Re: Makefile or not? Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2018-12-05 14:56 -0800
              Re: Makefile or not? Grant Edwards <invalid@invalid.invalid> - 2018-12-05 23:50 +0000
                Re: Makefile or not? Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2018-12-05 16:27 -0800
                Re: Makefile or not? Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2018-12-05 17:47 -0800
                Re: Makefile or not? Theo Markettos <theom+news@chiark.greenend.org.uk> - 2018-12-06 08:12 +0000
                Re: Makefile or not? Rob Gaddi <rgaddi@highlandtechnology.invalid> - 2018-12-06 10:17 -0800
                Re: Makefile or not? gtwrek@sonic.net (gtwrek) - 2018-12-06 18:35 +0000
                Re: Makefile or not? Theo Markettos <theom+news@chiark.greenend.org.uk> - 2018-12-06 18:39 +0000
            Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-06 09:22 +0100
            Re: Makefile or not? Theo Markettos <theom+news@chiark.greenend.org.uk> - 2018-12-06 18:46 +0000
              Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-06 21:51 +0100
                Re: Makefile or not? Dave Nadler <drn@nadler.com> - 2018-12-06 13:47 -0800
                Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-06 22:48 +0100
                Re: Makefile or not? Dave Nadler <drn@nadler.com> - 2018-12-06 14:01 -0800
                Re: Makefile or not? Tauno Voipio <tauno.voipio@notused.fi.invalid> - 2018-12-07 14:54 +0200
    Re: Makefile or not? David Brown <david.brown@hesbynett.no> - 2018-12-03 21:34 +0100
  Re: Makefile or not? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2018-12-03 11:06 -0500
    Re: Makefile or not? Jacob Sparre Andersen <jacob@jacob-sparre.dk> - 2018-12-03 22:05 +0100
      Re: Makefile or not? Phil Hobbs <pcdhSpamMeSenseless@electrooptical.net> - 2018-12-04 21:19 -0500
  Re: Makefile or not? queequeg@trust.no1 (Queequeg) - 2018-12-07 13:45 +0000

csiph-web