[CMake] How to get list of generated object-files of OBJECT-library?
Nils Gladitz
nilsgladitz at gmail.com
Mon Jul 17 10:47:00 EDT 2017
On 7/17/2017 3:52 PM, Deniz Bahadir wrote:
>
> This works just fine. However, now I want to add an additional
> build-step after creation of the object-files and before linking the
> shared library. (In particular, I want to compress the debug-symbols
> in the object-files. But that should be irrelevant for my question.)
>
> My first attempt was to add the following between the two add_library
> commands:
> ```
> add_custom_command( TARGET ${PROJECT_NAME}_OBJECTS POST_BUILD
> COMMAND objcopy --compress-debug-sections
> $<TARGET_OBJECTS:${PROJECT_NAME}_OBJECT>
> )
> ```
> But that results in the following error:
> ```
> (add_custom_command):
> Target "MyProject_OBJECTS" is an OBJECT library that may not
> have PRE_BUILD, PRE_LINK, or POST_BUILD commands.
> ```
>
> So I tried instead to add the following between the two add_library
> commands:
> ```
> add_custom_command( TARGET ${PROJECT_NAME} PRE_LINK
> COMMAND objcopy --compress-debug-sections
> $<TARGET_OBJECTS:${PROJECT_NAME}_OBJECT>
> )
> ```
> This then fails when evaluating the generator-expression:
> ```
> (add_custom_command):
> Error evaluating generator expression:
>
> $<TARGET_OBJECTS:MyProject_OBJECTS>
>
> The evaluation of the TARGET_OBJECTS generator expression is only
> suitable
> for consumption by CMake. It is not suitable for writing out
> elsewhere.
> ```
>
> So I am currently out of ideas (which do not make the CMakeLists.txt
> file completely unmaintainable). Therefore my question is:
>
> How can I retrieve the list of generated object-files so that I can
> pass it to another program that should be run as additional build-step
> before linking?
>
> IMHO, the most comfortable (and syntactically cleanest) way would be
> my first attempt. But that is probably more a feature-request than a
> simple question.
FWIW this was implemented in the upcoming 3.9:
https://cmake.org/cmake/help/latest/module/CPackIFW.html#command:cpack_ifw_configure_component
Nils
More information about the CMake
mailing list