2012/3/19 Brad King <brad.k...@kitware.com>: > On 3/19/2012 1:56 PM, Eric Noulard wrote: >> >> That's a great feature. > > > Thanks. > > >> Is there a feature that could guarantee the order of appearance of >> those objects / object library on the link line generated for >> add_executable ? > > Currently no order is guaranteed other than that all the object files > from directly compiled sources, external objects, and object libraries > will all come before any _linked_ libraries. I'm not sure whether it > is even possible to guarantee an order in all our target build systems. > > Can you enumerate use cases when the order of objects matters? Unlike > static libraries *all* objects will be included. If there are duplicate > symbols it is an error. If there are not duplicate symbols then how > does order matter?
I have to dig into an exotic build system I converted from makefile to CMake in order to fully understand why. As far as I remember it was mandatory but I cannot remember the reason. This use cases I do compile object using add_library and a single file using a custom command because the final link step (done with a custom command as well) requires this last object object file to be given first on the command line. The custom command likn step looks like: COMMAND ${CMAKE_LINKER} --oformat binary -Ttext ${BM_IMAGE_ADDRESS} -melf_i386 -e _start -o ${BM_APPNAME}.bin ${BM_STARTUPOBJ} --start-group $<TARGET_LINKER_FILE:system> $<TARGET_LINKER_FILE:xc> $<TARGET_LINKER_FILE:${BM_APPNAME}> --end-group ${BM_LDSCRIPT} ${BM_STARTUPOBJ} is the specific object file compiled on its own using custom command. Now that I think about it, before that I was forced to create a custom command in order to compile the file ('with the same option as the one compiled by add_library) but now I will be able to build an "OBJECT library" containing a single file and refer to it using $<TARGET_OBJECTS:objlib> which is perfectly fine for ensuring the ordering I may need for the link step. -- Erk Le gouvernement représentatif n'est pas la démocratie -- http://www.le-message.org -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers