<!DOCTYPE html><html><head><title></title><style type="text/css">#qt p.qt-MsoNormal{margin-top:0cm;margin-right:0cm;margin-left:0cm;margin-bottom:0.0001pt;font-size:11pt;font-family:"Calibri", sans-serif;}
#qt a:link{color:rgb(5, 99, 193);text-decoration-line:underline;text-decoration-style:solid;text-decoration-color:currentcolor;}
#qt a:visited{color:rgb(149, 79, 114);text-decoration-line:underline;text-decoration-style:solid;text-decoration-color:currentcolor;}

p.MsoNormal,p.MsoNoSpacing{margin:0}</style></head><body><div><br></div><div>On Tue, Oct 8, 2019, at 9:08 AM, Setzer Sebastian (CM-CI2/ECS2) via CMake wrote:<br></div><blockquote type="cite" id="qt"><div class="qt-WordSection1"><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Dear list,</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">I need to run a tool after building an executable, which will modify the executable itself.</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">I intend to extend the toolchain for this, because it shall be done for every executable on this particular operating system.</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">I think for this purpose, I need to change the rule CMAKE_<LANG>_LINK_EXECUTABLE.</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">And I think I can’t put multiple commands into that rule, so I need to write a wrapper which will be called instead of the normal linker, and the calls the normal linker and
 then that special tool.</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Right, so far?</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Now I’d like to pass a few additional parameters to this tool, which I’d like to get from a special target property.</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">The rule currently looks like this:</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">set(CMAKE_C_LINK_EXECUTABLE        "<CMAKE_C_COMPILER> <FLAGS> <CMAKE_C_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>")</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">And I wonder what these placeholders in angle brackets mean, and if there are more placeholders available. The manual doesn’t say anything about this, unfortunately:</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"><a href="https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_LINK_EXECUTABLE.html">https://cmake.org/cmake/help/latest/variable/CMAKE_LANG_LINK_EXECUTABLE.html</a></span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Is there, for example, a way to access arbitrary target properties?</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Or do I need to hide my special parameters somewhere in the LINK_OPTIONS property?</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size"> </span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Regards,</span></span><br></p><p class="qt-MsoNormal"><span style="font-family:"Arial", sans-serif" class="font"><span style="font-size:10pt" class="size">Sebastian</span></span><br></p></div><div>-- <br></div><div><br></div></blockquote><div><br></div><div>I don't see how running arbitrary commands is possible in this way.<br></div><div><br></div><div>If you want to avoid the boilerplate of adding a post-build custom command use a macro that performs the add_executable() and add_custom_command().  Then use the macro for each of the executable.<br></div><div><br></div><div>Those markers aren't specified because it is part of implementation details of the Makefile (and Ninja?) generator and these items tend not to be documented for that reason (at least that is what I have come to understand from comments made on gitlab and developers mailing list).<br></div><div><br></div><div>--<br></div><div>Fred<br></div></body></html>