How to change CMake linking order?
As far as the linking order of sources of a target is concerned, try reordering the arguments.
As for the linking order of libraries, you can use
Is this a documented feature?
can I rely on this behaviour?
Generally yes, I never seen cmake reordering object files.
The embedded systems domain is plagued with __weak function redefinition
I would disagree.
Why link order is important to me
The link order of object files is irrelevant – all symbols are loaded at one pass. What is causing problems with
weak symbols is the linking order of static libraries. In modern cmake use
OBJECT libraries, in older cmake use
--whole-archive linker flag. When using
whole-archive, be aware of LINK_INTERFACE_MULTIPLICITY.
CLICK HERE to find out more related problems solutions.