[CMake] Link order of object files
Alexander Neundorf
a.neundorf-work at gmx.net
Tue Jun 22 14:05:32 EDT 2010
On Tuesday 22 June 2010, Mathias Lafeldt wrote:
> Alexander Neundorf wrote:
> > On Monday 21 June 2010, Mathias Lafeldt wrote:
> >> Hi,
> >>
> >> is there a way to tell CMake in which order to link in object files?
> >>
> >> For example, I got the following executable:
> >>
> >> ADD_EXECUTABLE(hello crt0.o hello.c)
> >>
> >> Using a disassembler, I can see that hello.c is compiled in before
> >> crt0.o, but I want crt0.o to always be the first.
> >>
> >> Also, this gives me the same result:
> >>
> >> ADD_EXECUTABLE(hello hello.c crt0.o)
> >
> > Is this for some embedded system ?
>
> It's for the MIPS R5900 processor aka Emotion Engine.
>
> > You may consider putting crt0.o in the CMAKE_C_LINK_EXECUTABLE variable
> > for your target.
>
> Thank you. I didn't know about CMAKE_C_LINK_EXECUTABLE, but it seems to
> be suitable.
>
> Unfortunately, the only documentation I could find
> (<http://www.cmake.org/Wiki/CMake_Useful_Variables>) is very limited and
> I don't really know the meaning/origin of all variables in sharp (?)
> braces. For example, what is the difference between <FLAGS> and
> <CMAKE_C_LINK_FLAGS>?
>
> I found this in the eCos platform script:
>
> SET(CMAKE_C_LINK_EXECUTABLE "<CMAKE_C_COMPILER> <FLAGS>
> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> -nostdlib
> -nostartfiles -L${ECOS_LIBTARGET_DIRECTORY} -Ttarget.ld <LINK_LIBRARIES>")
It's also set in several of the platform cmake files in Modules/Platform/.
Alex
More information about the CMake
mailing list