<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div class="moz-cite-prefix">We have a similar situation and the
following works well enough for us:<br>
<br>
ExternalProject_Add(<br>
big_external_project<br>
...<br>
)<br>
<br>
set(OUTPUT_FILES files generated by the external build here)<br>
set_source_files_properties(${OUTPUT_FILES} PROPERTIES GENERATED
true)<br>
<br>
add_library(internal_library ${OUTPUT_FILES} and whatever else it
depends on)<br>
add_dependencies(internal_library big_external_project)<br>
<br>
Once it has been built, the big_external_project rarely gets
rebuilt unless we do a rm -rf * in the build tree.<br>
<br>
Magnus<br>
<br>
<br>
On 09/19/2013 07:31 PM, Weatherby,Gerard wrote:<br>
</div>
<blockquote
cite="mid:8EA343CABAC75842B591AB6997040C58228BBB2DC9@NSO-ITEXC-CCR04.uchc.net"
type="cite">
<meta http-equiv="Content-Type" content="text/html;
charset=ISO-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal">We have an external library which is not
easily “cmakeable” and takes a long time to compile. We have a
static copy of the source in our SCCS, so we don’t need to
fetch etc.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">What we’d like to have happen is have the
code compile if and only if the output libraries are not
present. The best I’ve come up with is:<o:p></o:p></p>
<p class="MsoNormal"> add_custom_command(OUTPUT
${CHOMBO_LIBS_2D}<o:p></o:p></p>
<p class="MsoNormal"> PRE_BUILD<o:p></o:p></p>
<p class="MsoNormal"> COMMAND
${CHOMBO_BUILD_CMD} <o:p></o:p></p>
<p class="MsoNormal"># DEPENDS don't
add depends line ... causes recompiling of Chombo every time <o:p></o:p></p>
<p class="MsoNormal">
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/Chombo/lib<o:p></o:p></p>
<p class="MsoNormal"> )<o:p></o:p></p>
<p class="MsoNormal"> # include the Chombo
libraries as "source" file to trigger building them via
"add_custom_command"<o:p></o:p></p>
<p class="MsoNormal"> # if they don't exist<o:p></o:p></p>
<p class="MsoNormal"> add_executable(${EXE_2D}
${CHOMBO_LIBS_2D} ${SRC_FILES})<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">where CHOMBO_LIBS_2D are the libraries
generated by CHOMBO_BUILD_CMD. The libraries link in the
source tree.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">This works, mostly. It doesn’t work with
parallel builds (make –j9)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I tried looking at ExternalProject_Add but
didn’t seem how to tell it what output is generated by the
command (and hence I’m not sure how / if it can be used to
only make if the libraries are missing).<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Gerard Weatherby<o:p></o:p></p>
<p class="MsoNormal">Appllication Architect<o:p></o:p></p>
<p class="MsoNormal">Virtual Cell, Center for Cell Analysis and
Modeling (CCAM)<o:p></o:p></p>
<p class="MsoNormal">University of Connecticut Health Center<o:p></o:p></p>
<p class="MsoNormal">860-679-2065<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">--
Powered by <a class="moz-txt-link-abbreviated" href="http://www.kitware.com">www.kitware.com</a>
Please keep messages on-topic and check the CMake FAQ at: <a class="moz-txt-link-freetext" href="http://www.cmake.org/Wiki/CMake_FAQ">http://www.cmake.org/Wiki/CMake_FAQ</a>
Kitware offers various services to support the CMake community. For more information on each offering, please visit:
CMake Support: <a class="moz-txt-link-freetext" href="http://cmake.org/cmake/help/support.html">http://cmake.org/cmake/help/support.html</a>
CMake Consulting: <a class="moz-txt-link-freetext" href="http://cmake.org/cmake/help/consulting.html">http://cmake.org/cmake/help/consulting.html</a>
CMake Training Courses: <a class="moz-txt-link-freetext" href="http://cmake.org/cmake/help/training.html">http://cmake.org/cmake/help/training.html</a>
Visit other Kitware open-source projects at <a class="moz-txt-link-freetext" href="http://www.kitware.com/opensource/opensource.html">http://www.kitware.com/opensource/opensource.html</a>
Follow this link to subscribe/unsubscribe:
<a class="moz-txt-link-freetext" href="http://www.cmake.org/mailman/listinfo/cmake">http://www.cmake.org/mailman/listinfo/cmake</a></pre>
</blockquote>
<br>
<br>
<pre class="moz-signature" cols="72">--
Magnus Johansson
Developer, Fox Technologies
</pre>
</body>
</html>