<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<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;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","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;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.apple-tab-span
        {mso-style-name:apple-tab-span;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";
        mso-fareast-language:FR;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
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]-->
</head>
<body lang="FR" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Hello,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thanks again.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">In my case I cannot use your script. I have the constraint to be ‘outside cmake’ so I do not know any of internal values like CMAKE_MAKE_PROGRAM.
I can only call ‘cmake --build’ to build stuff.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">I filed a feature request :
</span><a href="http://www.cmake.org/Bug/view.php?id=14014"><span lang="EN-US">http://www.cmake.org/Bug/view.php?id=14014</span></a><span lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Gregoire<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="EN-US" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> J Decker [mailto:d3ck0r@gmail.com]
<br>
<b>Sent:</b> vendredi 15 mars 2013 12:45<br>
<b>To:</b> Gregoire Aujay<br>
<b>Cc:</b> Nick Overdijk; John Drescher; cmake@cmake.org<br>
<b>Subject:</b> Re: [CMake] Build several targets using cmake --build <dir><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My ugly macro looks like... Build project macro creates targets 'build${PROJECT}' which can be depended on each other...<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">It writes to a output batch file, and then calls that batch. The batch file contains a cmake execution for that target, and then ${CMAKE_MAKE_PROGRAM} command.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-----------------------------------<o:p></o:p></p>
</div>
<div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">macro( BuildProject PROJECT SOLUTION PROJECT_SOURCE INSTALL_RESULT )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> set( LAST_TARGET Build${PROJECT} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> if( CMAKE_BINARY_DIR MATCHES ${CMAKE_BUILD_TYPE}_solution\$ )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> set( INSTALL ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}_out/${PROJECT} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> set( BUILD ${CMAKE_BINARY_DIR}/../${CMAKE_BUILD_TYPE}_solution/${PROJECT} ) <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> else()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> set( INSTALL ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}_out/${PROJECT} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> set( BUILD ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE}_solution/${PROJECT} ) <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> endif( CMAKE_BINARY_DIR MATCHES ${CMAKE_BUILD_TYPE}_solution\$ )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> set( ${INSTALL_RESULT} ${INSTALL} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> FILE( MAKE_DIRECTORY ${BUILD} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> if( MSVC )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> if( NOT EXISTS ${BUILD}/${SOLUTION}.sln )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> FILE( WRITE ${BUILD}/${SOLUTION}.sln )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> endif()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> if( ${CMAKE_MAKE_PROGRAM} MATCHES .*[Mm][Ss][Bb]uild.* )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <span class="apple-tab-span"> </span> build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE} PROJECT_NAME ${SOLUTION} TARGET INSTALL )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> SET( MORE_ARGS /m:4 /v:m )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> else()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> <span class="apple-tab-span"> </span> build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE} PROJECT_NAME ${SOLUTION} TARGET INSTALL.vcxproj )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> endif()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> SEPARATE_ARGUMENTS( BUILD_COMMAND WINDOWS_COMMAND ${BUILD_COMMAND} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> SET( BUILD_COMMAND ${BUILD_COMMAND} ${MORE_ARGS} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> SET( ADD_SOURCES SOURCES ${BUILD}/${SOLUTION}.sln )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> else( MSVC )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> build_command( BUILD_COMMAND CONFIGURATION ${CMAKE_BUILD_TYPE} PROJECT_NAME ${SOLUTION} TARGET install )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> SEPARATE_ARGUMENTS( BUILD_COMMAND UNIX_COMMAND ${BUILD_COMMAND} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> endif( MSVC )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> if( CMAKE_TOOLCHAIN_FILE )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> set( TOOLCHAIN -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> endif( CMAKE_TOOLCHAIN_FILE )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> set( FAKE_ARGN1 ${ARGN})<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> string (REPLACE ";" " " FAKE_ARGN2 "${FAKE_ARGN1}")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> FILE( WRITE ${BUILD}/makeit.bat "\"${CMAKE_COMMAND}\" -G \"${CMAKE_GENERATOR}\" ${TOOLCHAIN} \"${PROJECT_SOURCE}\" -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${INSTALL} ${FAKE_ARGN2}\n" )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> string (REPLACE ";" " " FAKE_BUILD_COMMAND "${BUILD_COMMAND}")<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> FILE( APPEND ${BUILD}/makeit.bat ${FAKE_BUILD_COMMAND} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"> add_custom_target( Build${PROJECT} ALL<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> COMMAND makeit.bat<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"> </span> WORKING_DIRECTORY ${BUILD}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> ${ADD_SOURCES}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"> )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">endmacro( BuildProject )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">-----------------<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">usage is something like<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<div>
<p class="MsoNormal">set( PROJECT intershell )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">set( EXTRA_FLAGS -DSACK_SDK_ROOT_PATH=${SACK_SDK_ROOT_PATH} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">BuildProject( ${PROJECT} ${PROJECT} ${CMAKE_CURRENT_LIST_DIR}/../src/InterShell INTERSHELL_SDK_ROOT_PATH ${EXTRA_FLAGS} )<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Add_custom_command( TARGET Build${PROJECT} <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"> </span>COMMAND ${INTERSHELL_SDK_ROOT_PATH}/intershell_deploy${CMAKE_EXECUTABLE_SUFFIX} -nr<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><span class="apple-tab-span"> </span>WORKING_DIRECTORY ${INTERSHELL_SDK_ROOT_PATH}<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">) <o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">add_dependencies( ${LAST_TARGET} Buildcore )<o:p></o:p></p>
</div>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">-----------------<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Above sourced from<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeLists.txt">https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeLists.txt</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">and<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeBuild.txt">https://code.google.com/p/c-system-abstraction-component-gui/source/browse/cmake_all/CMakeBuild.txt</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">--------------------<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Fri, Mar 15, 2013 at 4:37 AM, J Decker <<a href="mailto:d3ck0r@gmail.com" target="_blank">d3ck0r@gmail.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">If the dependencies are already satisfied, and the cmake_make_program can run mutliple in parallel, then it works great.<o:p></o:p></p>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">I have a cmake script that builds other cmake top level projects; and this ends up building in parallel on visual studio.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">can't do it with any other compiler I use for windows (make can be aliased on linux to include a /j4).<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><o:p> </o:p></p>
<div>
<p class="MsoNormal">On Fri, Mar 15, 2013 at 1:37 AM, Gregoire Aujay <<a href="mailto:gaujay@movea.com" target="_blank">gaujay@movea.com</a>> wrote:<o:p></o:p></p>
<p class="MsoNormal">Hello,<br>
<br>
Thanks for your replies. I understand that I can only 'cmake --build' one target at a time.<br>
I think that the solutions you propose do not benefit from tools, like ninja, that have parallel build capabilities.<br>
<br>
I'll file a feature request.<br>
<br>
Regards,<br>
Greg<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal"><br>
-----Original Message-----<br>
From: Nick Overdijk [mailto:<a href="mailto:nick@astrant.net" target="_blank">nick@astrant.net</a>]<br>
Sent: jeudi 14 mars 2013 19:10<br>
To: John Drescher<br>
Cc: Gregoire Aujay; <a href="mailto:cmake@cmake.org" target="_blank">cmake@cmake.org</a><br>
Subject: Re: [CMake] Build several targets using cmake --build <dir><br>
<br>
You can only 'cmake' a single-target. If you want to have more targets, create more directories: for each target one.<br>
<br>
On 2013-14-03, at 19:07:36 , John Drescher wrote:<br>
<br>
>> I use cmake 2.8.10 on windows.<br>
>><br>
>><br>
>><br>
>> I would like to build several targets with cmake --build <dir> so<br>
>> the underlying build tool to do parallel jobs.<br>
>><br>
>><br>
>><br>
>> Currently it only seems to be possible to build one target at a time,<br>
>> using --target .<br>
>> (<a href="http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir" target="_blank">http://www.cmake.org/cmake/help/v2.8.10/cmake.html#opt:--builddir</a>)<br>
>><br>
>><br>
>><br>
>> Can someone tell me how I could achieve that with current cmake version?<br>
>><br>
>><br>
> I execute more than 1 cmake --build at the same time on windows. I<br>
> actually do this in a program called runjobs<br>
><br>
> <a href="http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once-Utility" target="_blank">
http://www.codeproject.com/Articles/25810/Run-All-Jobs-at-Once-Utility</a><br>
><br>
> John<br>
> --<br>
><br>
> Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
><br>
> Visit other Kitware open-source projects at<br>
> <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">http://www.kitware.com/opensource/opensource.html</a><br>
><br>
> Please keep messages on-topic and check the CMake FAQ at:<br>
> <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">http://www.cmake.org/Wiki/CMake_FAQ</a><br>
><br>
> Follow this link to subscribe/unsubscribe:<br>
> <a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><br>
<br>
<br>
<br>
--<br>
<br>
Powered by <a href="http://www.kitware.com" target="_blank">www.kitware.com</a><br>
<br>
Visit other Kitware open-source projects at <a href="http://www.kitware.com/opensource/opensource.html" target="_blank">
http://www.kitware.com/opensource/opensource.html</a><br>
<br>
Please keep messages on-topic and check the CMake FAQ at: <a href="http://www.cmake.org/Wiki/CMake_FAQ" target="_blank">
http://www.cmake.org/Wiki/CMake_FAQ</a><br>
<br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://www.cmake.org/mailman/listinfo/cmake" target="_blank">http://www.cmake.org/mailman/listinfo/cmake</a><o:p></o:p></p>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</div>
</body>
</html>