[CMake] Sharing sources between two targets

Nick Gnedin ngnedin at gmail.com
Mon Apr 22 15:27:05 EDT 2013


Indeed everything works that way, many thanks, guys.



On 04/22/2013 02:09 PM, David Cole wrote:
> No, it doesn't double anything.
>
> Without the outside_deps, the executable wouldn't link if it needed
> something from them.
>
> With them, it will link, and be as small a size as the linker can make
> it. (Assuming a release build, where the linker leaves out what it
> doesn't need...)
>
>
>
> -----Original Message-----
> From: Nick Gnedin <ngnedin at gmail.com>
> Cc: CMake ML <cmake at cmake.org>
> Sent: Mon, Apr 22, 2013 2:55 pm
> Subject: Re: [CMake] Sharing sources between two targets
>
>
>
> That doubles the size of the executable, because if I do something like
> that:
>
> ADD_LIBRARY(temp STATIC ${sources})
> TARGET_LINK_LIBRARIES(temp outside_deps)
>
> ADD_EXECUTABLE(code main.cpp)
> TARGET_LINK_LIBRARIES(code temp)
>
> then TARGET_LINK_LIBRARIES(...) also add outside_deps as link libraries
> for code, so they end up included twice.
>
>
>
> On 04/22/2013 01:50 PM, Jean-Christophe Fillion-Robin wrote:
>> Hi Nick,
>>
>> What about creating a static library that would be linked against both
>> the executable and the library ?
>>
>> Hth
>> Jc
>>
>>
>> On Mon, Apr 22, 2013 at 2:45 PM, Nick Gnedin <ngnedin at gmail.com
>> <mailto:ngnedin at gmail.com>> wrote:
>>
>>
>>      Folks,
>>
>>      I am using CMake to create 2 targets - a stand-alone executable
> and
>>      a library that can be imported by Python. Both share most of the
>>      sources. If I just specify them as two separate targets, each will
>>      compile all the sources, so most of the source files end up
> compiled
>>      twice.
>>
>>      Is there a way to share the compiled sources between the two
>>      targets? I can create an intermediate library, but that is less
>>      convenient since the executable will then depend on it. What I
> would
>>      really like is to have a self-contained executable and a separate
>>      library that use the same object files.
>>
>>      Many thanks for any hint,
>>
>>      Nick Gnedin
>>      --
>>
>>      Powered by www.kitware.com <http://www.kitware.com>
>>
>>      Visit other Kitware open-source projects at
>>      http://www.kitware.com/__opensource/opensource.html
>>      <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
>>      <http://www.cmake.org/Wiki/CMake_FAQ>
>>
>>      Follow this link to subscribe/unsubscribe:
>>      http://www.cmake.org/mailman/__listinfo/cmake
>>      <http://www.cmake.org/mailman/listinfo/cmake>
>>
>>
>>
>>
>> --
>> +1 919 869 8849
> --
>
> 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
>
>
>


More information about the CMake mailing list