Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.arch.embedded > #28361
| 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> |
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
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