Re: [CMake] [EXTERNAL] Re: CMake and Ninja, RERUN_CMAKE useless?

2019-10-09 Thread Nagurne, James via CMake
That's the piece of the puzzle I was missing. Thank you!

Yes, I had deleted the cache because I thought that would force a complete 
regeneration. I'm using a rather complicated system of ExternalProjects (LLVM), 
 so I figured it was the quickest way to essentially force cmake to start from 
the beginning and reload those cache files without invalidating and forcing a 
rebuild of the executables and libraries I had already built

Is there a way to do what I was looking for? I wouldn't be surprised if there 
wasn't, since removing those very fundamental building blocks might as well 
just be an rm -rf ./*

JB

-Original Message-
From: Robert Maynard [mailto:robert.mayn...@kitware.com] 
Sent: Wednesday, October 9, 2019 7:16 AM
To: Nagurne, James
Cc: cmake@cmake.org
Subject: [EXTERNAL] Re: [CMake] CMake and Ninja, RERUN_CMAKE useless?

The default generator and all other associated information ( '-D' ) is
kept in the CMakeCache.txt file in the root of the build directory.
The execution of `cmake -S  -B ` will reload
this cache before doing anything else. Have you verified that your
build directory hasn't deleted this file?

On Tue, Oct 8, 2019 at 8:31 PM Nagurne, James via CMake  wrote:
>
> Hi all,
>
>
>
> My question comes from a Ninja generator build system, and is specifically 
> about an internal rule generated by cmake.
>
> What is the purpose of the RERUN_CMAKE rule generated by CMake with a Ninja 
> generator?
>
>
>
> In the current repo, the only reference to this rule is in 
> WriteTargetRebuildManifest here
>
> At line 1285, the rule is written out, seemingly as-is.
>
>
>
> According to lines 1274 to 1284, the only actual behavior of this command, 
> which is executed whenever the source CMakeLists.txt file, files included 
> from the CMakeLists, and some other CMake installation files change, is:
>
> cmake -S  -B 
>
>
>
> This seems completely insufficient for “re-running” cmake. The most obvious 
> flaw is the absence of the generator. When I’ve seen this rule fire, my Ninja 
> build system adds a useless Makefile to the build system, and then 
> (hopefully) continues building as if nothing had been done at all, without so 
> much as inspecting that Makefile.
>
>
>
> What about command-line arguments like -D?
>
>
>
> Am I missing the purpose of this rule or potentially doing something 
> non-standard? The reason I send an email is because this behavior is sending 
> my project into a cmake loop where it detects build.ninja is out of date, 
> re-runs cmake to generate a Makefile instead of a ninja build system, and 
> then infinitely repeats because it never actually re-ran anything.
>
>
>
> Thanks,
>
> JB
>
> Code Generation
>
> Texas Instruments
>
> --
>
> 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
-- 

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


[CMake] CMake and Ninja, RERUN_CMAKE useless?

2019-10-08 Thread Nagurne, James via CMake
Hi all,

My question comes from a Ninja generator build system, and is specifically 
about an internal rule generated by cmake.
What is the purpose of the RERUN_CMAKE rule generated by CMake with a Ninja 
generator?

In the current repo, the only reference to this rule is in 
WriteTargetRebuildManifest 
here
At line 1285, the rule is written out, seemingly as-is.

According to lines 1274 to 1284, the only actual behavior of this command, 
which is executed whenever the source CMakeLists.txt file, files included from 
the CMakeLists, and some other CMake installation files change, is:
cmake -S  -B 

This seems completely insufficient for "re-running" cmake. The most obvious 
flaw is the absence of the generator. When I've seen this rule fire, my Ninja 
build system adds a useless Makefile to the build system, and then (hopefully) 
continues building as if nothing had been done at all, without so much as 
inspecting that Makefile.

What about command-line arguments like -D?

Am I missing the purpose of this rule or potentially doing something 
non-standard? The reason I send an email is because this behavior is sending my 
project into a cmake loop where it detects build.ninja is out of date, re-runs 
cmake to generate a Makefile instead of a ninja build system, and then 
infinitely repeats because it never actually re-ran anything.

Thanks,
JB
Code Generation
Texas Instruments
-- 

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