On 2013-12-11 20:00, Ben Boeckel wrote:
On Wed, Dec 11, 2013 at 19:38:21 -0500, Matthew Woehlke wrote:
I don't think this is relevant? In these cases, a header is changing,
which will (hopefully) lead to the source files using that header
being rebuilt, which will cause the library to relink anyway. (And if
the sources *aren't* rebuilt, I don't think relinking will help?)
I'm concerned about this:
(external) (internal)
template.hpp <-- A.cpp --> header.h
^ ^
| |
| \- liba.so
| ^
| |
\-- B.cpp <-- libb.so
Where template.hpp changes (testing with 2.8.12.1 shows that touching
template.hpp triggers a rebuild with Ninja, but not Unix Makefiles),
That sounds like a bug :-).
internal_header.h changes and A.cpp gets recompiled, liba.so relinked
and libb.so skipped because the ABI hasn't changed. The problem is that
if something inlined from template.hpp is incompatible with what B.cpp
has inlined, things need recompiled.
Yes. What I am missing is how re*linking* libb.so would help here? Don't
you need to re*compile* B.o for this case?
Actually... back up for a moment. Since we're talking about dynamic
libraries here (none of this applies to static I think; in that case you
must always relink), how would a non-ABI change in liba.so cause the
result of linking to be different? I didn't think dynamic linking
involved *copying* symbols from liba into libb?
What am I missing?
--
Matthew
--
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers