<div dir="ltr"><div><div><div><div>Hi Gil.<br><br></div>The DEPENDS argument of add_custom_target() is for specifying dependency *files*, not *targets*.<br><br></div>As the docs (<a href="https://cmake.org/cmake/help/latest/command/add_custom_target.html">https://cmake.org/cmake/help/latest/command/add_custom_target.html</a>) say, what you need is add_dependencies().<br><br></div><div>Also note that you can add the COMMAND directly to the custom target, no need for a post-build step:<br></div><div><br>
<p class="MsoNormal" style="background:rgb(239,240,241) none repeat scroll 0% 0%;vertical-align:baseline"><span style="font-size:10pt;font-family:Consolas;color:rgb(36,39,41);border:1pt none windowtext;padding:0in;background:rgb(239,240,241) none repeat scroll 0% 0%">add_custom_target(final_tgt ALL</span></p><p class="MsoNormal" style="background:rgb(239,240,241) none repeat scroll 0% 0%;vertical-align:baseline"><span style="font-size:10pt;font-family:Consolas;color:rgb(36,39,41);border:1pt none windowtext;padding:0in;background:rgb(239,240,241) none repeat scroll 0% 0%">  COMMAND <command> ARGS <args><br></span></p><p class="MsoNormal" style="background:rgb(239,240,241) none repeat scroll 0% 0%;vertical-align:baseline"><span style="font-size:10pt;font-family:Consolas;color:rgb(36,39,41);border:1pt none windowtext;padding:0in;background:rgb(239,240,241) none repeat scroll 0% 0%">)</span></p><span style="font-size:10pt;font-family:Consolas;color:rgb(36,39,41);border:1pt none windowtext;padding:0in;background:rgb(239,240,241) none repeat scroll 0% 0%">add_dependencies(final_tgt tgt1 tgt2)<br></span>

<br></div>This way, the custom target will depend on tgt1 and tgt2, and thus only build (run its command) after they're up to date.<br><br></div>Petr<br></div><div class="gmail_extra"><br><div class="gmail_quote">On 14 May 2018 at 15:22, Gil Moses <span dir="ltr"><<a href="mailto:gil.moses@outlook.com" target="_blank">gil.moses@outlook.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div link="#0563C1" vlink="#954F72" lang="EN-US">
<div class="m_-3449717828450302931WordSection1">
<p class="MsoNormal"><a name="m_-3449717828450302931__MailEndCompose"><u></u> <u></u></a></p>
<p class="MsoNormal"><span><u></u> <u></u></span></p>
<span></span>
<p class="MsoNormal">Hi,<u></u><u></u></p>
<p class="MsoNormal">I’m posting this after getting no useful reply in StackOverflow:
<a href="https://stackoverflow.com/questions/50198141/cmake-custom-target-doesnt-build" target="_blank">
https://stackoverflow.com/<wbr>questions/50198141/cmake-<wbr>custom-target-doesnt-build</a>.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">Using CMake 2.8.8, I'm building two targets using:<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">add_library(tgt1 SHARED a.cpp)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">add_library(tgt2 SHARED b.cpp)<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">After both are built, I need to run a post build step that depends on both targets. I tried many combinations of the following but with no success:<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">add_custom_target(final_tgt DEPENDS tgt1 tgt2)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">add_custom_command(TARGET final_tgt POST_BUILD COMMAND <command>
 ARGS <args>)<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">The final target would simply not build, even though its build.make contains the custom command.<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">Tried to use ALL for the custom target, however make attempts to build it first while missing the first targets.<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">And I can't use an add_library or add_executable for the final target, since they require specifying source files.<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">What is the correct way to do it?<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">==============================<wbr>=====<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">Edit: below is a minimal verifiable source code. What it attempts to do is to compile code (for Mac) in two architectures and as a post-build to create a universal binary using lipo:<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">cmake_minimum_required(VERSION 2.8)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">set(icpc_req_path "/usr/local/bin/icpc-16.0.146"<wbr>)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1"><u></u> <u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">set(CMAKE_CXX_COMPILER "${icpc_req_path}")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1"><u></u> <u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">project("CMakeTest")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">set(SOURCE_FILES a.cpp)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1"><u></u> <u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">set (TARGET_NAME "TGT")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">set(TARGETS "")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">set(ARCHITECTURES i386 x86_64)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1"><u></u> <u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">foreach(ar ${ARCHITECTURES})<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    set(CMAKE_CXX_FLAGS_RELEASE "")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    set(CMAKE_CXX_FLAGS_DEBUG "")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    set(CMAKE_CXX_FLAGS "")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1"><u></u> <u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    add_library(TGT_${ar} SHARED ${SOURCE_FILES})<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    set_target_properties(${<wbr>TARGET_NAME}_${ar} PROPERTIES COMPILE_FLAGS
 "-arch ${ar} -xSSE3")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    set_target_properties(${<wbr>TARGET_NAME}_${ar} PROPERTIES LINK_FLAGS
 "-arch ${ar}")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">    set(TARGETS "${TARGETS};lib${TARGET_NAME}_<wbr>${ar}.dylib")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">endforeach(ar)<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1"><u></u> <u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">message("Targets: ${TARGETS}")<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">add_custom_target(${TARGET_<wbr>NAME} DEPENDS ${TARGETS})<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND
 "lipo" ARGS "-create" ${TARGETS} "-output" "${TARGET_NAME}.dylib")<u></u><u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729"><u></u> <u></u></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt;background:white;vertical-align:baseline">
<span style="font-size:11.5pt;font-family:"Arial",sans-serif;color:#242729">And the contents of a.cpp is:<u></u><u></u></span></p>
<p class="MsoNormal" style="background:#eff0f1;vertical-align:baseline"><span style="font-size:10.0pt;font-family:Consolas;color:#242729;border:none windowtext 1.0pt;padding:0in;background:#eff0f1">int main(){}</span><span style="font-size:10.0pt;font-family:Consolas;color:#242729"><u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<p class="MsoNormal">Thanks,<u></u><u></u></p>
<p class="MsoNormal">Gil.<u></u><u></u></p>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>

<br>-- <br>
<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer" target="_blank">www.kitware.com</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" rel="noreferrer" target="_blank">http://www.cmake.org/Wiki/<wbr>CMake_FAQ</a><br>
<br>
Kitware offers various services to support the CMake community. For more information on each offering, please visit:<br>
<br>
CMake Support: <a href="http://cmake.org/cmake/help/support.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/<wbr>support.html</a><br>
CMake Consulting: <a href="http://cmake.org/cmake/help/consulting.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/<wbr>consulting.html</a><br>
CMake Training Courses: <a href="http://cmake.org/cmake/help/training.html" rel="noreferrer" target="_blank">http://cmake.org/cmake/help/<wbr>training.html</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer" target="_blank">http://www.kitware.com/<wbr>opensource/opensource.html</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://cmake.org/mailman/listinfo/cmake" rel="noreferrer" target="_blank">https://cmake.org/mailman/<wbr>listinfo/cmake</a><br>
<br></blockquote></div><br></div>