Michael Wild wrote:
On 13. Oct, 2009, at 0:13, Naram Qashat wrote:
Say I have a main executable and a number of shared libraries that
rely on that executable. Say I have a certain C++ source that is
required to be built by not only the main executable, but also every
single shared library (the source in question is a Windows-specific
file to handle memory allocations). I have found that when using a
Visual Studio generator, CMake causes the source file to be rebuilt
for every single shared library, causing an increase in build time.
Is there an easy way to have the object file not be rebuilt every
single time, but be reused for all the shared libraries? The source
file is included in the main executable through add_executable(), and
it's added to each of the shared libraries through add_library().
Thanks,
Naram Qashat
How about using a static library?
add_library( common STATIC common.c )
add_executable( super super.c )
target_link_libraries( super common )
add_library( duper SHARED duper.c )
target_link_libraries( duper common )
However, are you going to link your executable against any of the shared
libraries? If used in this way, you would get linking errors (unless the
functions in common.c are static).
I'd rather not introduce a static library for this, unless there is no other
way. There must be some way to reuse the object file without the use of a
static library, I can't see this being some limitation of CMake. But then
again, I don't know enough about how CMake creates it's build system to know if
there is a way or not, besides your suggestion of using a static library.
Thanks,
Naram
Michael
_______________________________________________
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