[prev in list] [next in list] [prev in thread] [next in thread] 

List:       cmake
Subject:    Re: [CMake] CMake Project Generation Speedup
From:       Cristian Adam <cristian.adam () gmail ! com>
Date:       2019-03-21 10:16:37
Message-ID: CA+u+m-LDKqy97mhxnEDFu+_1LSvtA2eaw3=nAcKv7Mfhd2jS5w () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


Hi,

CMake has for Visual Studio is a multi configuration generator. (Debug,
Release, RelMinSize, RelWithDbgInformation).

If you specify only one configuration you should cut the generation time to
1/4th.

See
https://cmake.org/cmake/help/latest/variable/CMAKE_CONFIGURATION_TYPES.html#variable:CMAKE_CONFIGURATION_TYPES


Cheers,
Cristian

On Wed, Mar 20, 2019, 21:53 J. Caleb Wherry <calebwherry@gmail.com> wrote:

> Did anything ever come of this?
> 
> I am in a similar boat: we have >800 targets on our full build (native
> C++, Managed C++, C#, Java, CUDA, etc) and the majority of the time for the
> configure/generate steps takes place in the generate step (>70%).
> 
> I understand there is a lot of IO since the generate step has to write the
> project files and filters for each C++ project (the majority of our
> projects) for VS generators (what we use). I'm just looking to see if there
> is anything to look at or potentially speedup up the generate step besides
> "get a faster drive".
> 
> Thanks!
> -Caleb
> 
> On Thu, Nov 17, 2016 at 11:15 AM Damian <damian.campeanu@gmail.com> wrote:
> 
> > Hi all,
> > 
> > We are still in the process of switching our large Make-based build to
> > CMake. One of the issues we're running into is the time it takes to reparse
> > and regenerate the CMake project (whether ninja, VS, or make) after
> > touching any CMake file. To give you an idea, we have about 1000 targets
> > and that takes a good 2 min for CMake to rerun.
> > 
> > Are there any plans to speed this up? Maybe parallelize it in some way or
> > do a better job regenerating only what needs regenerating? Is there
> > anything we can do on our side to reduce our regeneration times?
> > 
> > For example, if using a VS generator, each directory in the source that
> > has a CMakeLists.txt gets a .vcproj and .sln generated. Ideally, if I touch
> > one of those CMakeLists.txt, only that .sln/.vcproj would get regenerated.
> > 
> > Thanks for any help.
> > --
> > 
> > Powered by www.kitware.com
> > 
> > Please keep messages on-topic and check the CMake FAQ at:
> > http://www.cmake.org/Wiki/CMake_FAQ
> > 
> > Kitware offers various services to support the CMake community. For more
> > information on each offering, please visit:
> > 
> > CMake Support: http://cmake.org/cmake/help/support.html
> > CMake Consulting: http://cmake.org/cmake/help/consulting.html
> > CMake Training Courses: http://cmake.org/cmake/help/training.html
> > 
> > Visit other Kitware open-source projects at
> > http://www.kitware.com/opensource/opensource.html
> > 
> > Follow this link to subscribe/unsubscribe:
> > http://public.kitware.com/mailman/listinfo/cmake
> 
> 
> 
> --
> J. Caleb Wherry
> *Scientific Software Engineer*
> 
> <http://www.calebwherry.com>
> http://www.calebwherry.com
> +1 (615) 708-5651
> calebwherry@gmail.com
> --
> 
> Powered by www.kitware.com
> 
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
> 
> Kitware offers various services to support the CMake community. For more
> information on each offering, please visit:
> 
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
> 
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
> 
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
> 


[Attachment #5 (text/html)]

<div dir="auto">Hi,<div dir="auto"><br></div><div dir="auto">CMake has for Visual \
Studio is a multi configuration generator. (Debug, Release, RelMinSize, \
RelWithDbgInformation).</div><div dir="auto"><br></div><div dir="auto">If you specify \
only one configuration you should cut the generation time to 1/4th.</div><div \
dir="auto"><br></div><div dir="auto">See  <a \
href="https://cmake.org/cmake/help/latest/variable/CMAKE_CONFIGURATION_TYPES.html#vari \
able:CMAKE_CONFIGURATION_TYPES">https://cmake.org/cmake/help/latest/variable/CMAKE_CONFIGURATION_TYPES.html#variable:CMAKE_CONFIGURATION_TYPES</a></div><div \
dir="auto"><br></div><div dir="auto">Cheers,</div><div \
dir="auto">Cristian</div></div><br><div class="gmail_quote"><div dir="ltr" \
class="gmail_attr">On Wed, Mar 20, 2019, 21:53 J. Caleb Wherry &lt;<a \
href="mailto:calebwherry@gmail.com">calebwherry@gmail.com</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 \
.8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Did anything ever \
come of this?<div><br></div><div>I am in a similar boat: we have &gt;800 targets on \
our full build (native C++, Managed C++, C#, Java, CUDA, etc) and the majority of the \
time for the configure/generate steps takes place in the generate step \
(&gt;70%).</div><div><br></div><div>I understand there is a lot of IO since the \
generate step has to write the project files and filters for each C++ project (the \
majority of our projects) for VS generators (what we use). I&#39;m just looking to \
see if there is anything to look at or potentially speedup up the generate step \
besides &quot;get a faster \
drive&quot;.</div><div><br></div><div>Thanks!</div><div>-Caleb</div></div><br><div \
class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Nov 17, 2016 at 11:15 \
AM Damian &lt;<a href="mailto:damian.campeanu@gmail.com" target="_blank" \
rel="noreferrer">damian.campeanu@gmail.com</a>&gt; wrote:<br></div><blockquote \
class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid \
rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>Hi \
all,<br><br></div>We are still in the process of  switching our large Make-based \
build to CMake. One of the issues we&#39;re  running into is the time it takes to \
reparse and regenerate the CMake  project (whether ninja, VS, or make) after touching \
any CMake file. To  give you an idea, we have about 1000 targets and that takes a \
good 2 min  for CMake to rerun.<br><br></div>Are there any plans to speed this up? 
Maybe parallelize it in some way or do a better job regenerating only 
what needs regenerating? Is there anything we can do on our side to 
reduce our regeneration times?<br><br>For example, if using a VS 
generator, each directory in the source that has a CMakeLists.txt gets a
 .vcproj and .sln generated. Ideally, if I touch one of those 
CMakeLists.txt, only that .sln/.vcproj would get regenerated.<br><br></div>Thanks for \
                any help.</div>
-- <br>
<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer 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 noreferrer" \
target="_blank">http://www.cmake.org/Wiki/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 \
noreferrer" target="_blank">http://cmake.org/cmake/help/support.html</a><br> CMake \
Consulting: <a href="http://cmake.org/cmake/help/consulting.html" rel="noreferrer \
noreferrer" target="_blank">http://cmake.org/cmake/help/consulting.html</a><br> CMake \
Training Courses: <a href="http://cmake.org/cmake/help/training.html" rel="noreferrer \
noreferrer" target="_blank">http://cmake.org/cmake/help/training.html</a><br> <br>
Visit other Kitware open-source projects at <a \
href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer noreferrer" \
target="_blank">http://www.kitware.com/opensource/opensource.html</a><br> <br>
Follow this link to subscribe/unsubscribe:<br>
<a href="http://public.kitware.com/mailman/listinfo/cmake" rel="noreferrer \
noreferrer" target="_blank">http://public.kitware.com/mailman/listinfo/cmake</a></blockquote></div><br \
clear="all"><div><br></div>-- <br><div dir="ltr" \
class="m_-2516754535588609513gmail_signature"><div>J. Caleb Wherry</div><i>Scientific \
Software Engineer</i><div><br><a href="http://www.calebwherry.com" target="_blank" \
rel="noreferrer"></a><div><a href="http://www.calebwherry.com" target="_blank" \
rel="noreferrer">http://www.calebwherry.com</a><br><span><span title="Call with \
Google Voice"><span title="Call with Google Voice">+1 (615) \
708-5651</span></span></span><div><a href="mailto:calebwherry@gmail.com" \
                target="_blank" \
                rel="noreferrer">calebwherry@gmail.com</a></div></div></div></div>
-- <br>
<br>
Powered by <a href="http://www.kitware.com" rel="noreferrer 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 noreferrer" \
target="_blank">http://www.cmake.org/Wiki/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 \
noreferrer" target="_blank">http://cmake.org/cmake/help/support.html</a><br> CMake \
Consulting: <a href="http://cmake.org/cmake/help/consulting.html" rel="noreferrer \
noreferrer" target="_blank">http://cmake.org/cmake/help/consulting.html</a><br> CMake \
Training Courses: <a href="http://cmake.org/cmake/help/training.html" rel="noreferrer \
noreferrer" target="_blank">http://cmake.org/cmake/help/training.html</a><br> <br>
Visit other Kitware open-source projects at <a \
href="http://www.kitware.com/opensource/opensource.html" rel="noreferrer noreferrer" \
target="_blank">http://www.kitware.com/opensource/opensource.html</a><br> <br>
Follow this link to subscribe/unsubscribe:<br>
<a href="https://cmake.org/mailman/listinfo/cmake" rel="noreferrer noreferrer" \
target="_blank">https://cmake.org/mailman/listinfo/cmake</a><br> </blockquote></div>



-- 

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: \
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information \
on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at \
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic