On 17/12/2018 15:37, David Blaikie wrote:
On Sun, Dec 16, 2018, 4:24 PM Kris Thielemans
<kris.f.thielem...@gmail.com <mailto:kris.f.thielem...@gmail.com> wrote:
I’ve just had a problem caused by an upgrade of my system files (in
this particular case: boost). Rebuilding our software didn’t
correctly rebuild those files that depend on the updated boost
files. (I’m using CMake 3.9 with make on Ubuntu 16.04)____
Checking a bit more carefully it appears that the system .h files
are not included in depend.make. I guess this is done to save some
time checking all those dependencies as system files are supposed to
be relatively stable, but if they’re not, it creates trouble of
course.
Is there any way to change this behaviour? (ideally something like
for one time only, check if dependent system include files are more
recent then what was compiled, but that’s a stretch of course).____
> If you're willing to run a different command or flag when rebuilding
> after upgrading system libraries, I would guess the thing to do would be
> to do a clean and rebuild, perhaps?
This is unfortunately insufficient. After upgrading any system
libraries you will have to clean everything, including the CMake cache,
and re-run CMake from a clean build tree, then rebuild everything.
The reason for this is that the cache contains the results of
find_library etc., and these may have changed as a result of the system
upgrade. However, the cached values may be used despite this. It's
safest to start from a clean slate.
For example, if you upgraded boost from 1.6x to 1.69 Boost.Filesystem
dropped its dependency upon Boost.System, which is no longer a library
(it's header-only). This would result in a link failure. I've not
specifically tested this case to see if it would cope, but there is
plenty of stuff cached which could potentially cause problems, and the
solution to drop the cache is simple. I wouldn't want to risk the
integrity of the build due to the potential for subtle inconsistency
between the cache and the system. After you've upgraded the system,
it's essentially a different system.
Regards,
Roger
--
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