Philip Lowman wrote:
On Fri, Feb 27, 2009 at 5:24 PM, Brad King <[email protected] Try removing an object file from a shared library, rebuild just that
    library,
    and then run the executable (which still exists).  It will break at
    runtime,
    but if you try relinking the executable it will fail at build time
    and the
    executable will not exist anymore.


Good point, although this could also be handled by forcing a relink against the .so when adding or removing files from add_library().

One can create the same case just by removing one symbol from the .cpp file
of one object file.  CMake would have no knowledge of this.

    Also, it is possible that the executable's source files do manual extern
    declarations instead of including header files.  Then the shared library
    API can change and break the executable at runtime too.


You make a good point about the extern case. Although I've never used this technique before I'm sure there is source code out here that does it.

So, is the idea worth logging as a feature request as an opt-in behavior? It does seem like it would only be something CMake could easily control with the Makefile generator. On the whole I could see this being very useful for projects that have lots of shared libraries or plugins, however.

Sure.  I do not expect the implementation in the Makefile generators to
be hard. The question is what interface we should provide to enable it.
That can be discussed in the issue tracker.

-Brad
_______________________________________________
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://www.cmake.org/mailman/listinfo/cmake

Reply via email to