[CMake] transitive dependencies (again)
iosif neitzke
iosif.neitzke+cmake at gmail.com
Mon Dec 14 15:36:49 EST 2015
If you can build Ada sources first, you might wish to make that a
standalone project that is consumed downstream natively as an Imported
Library. Do you generate the import library from a .def file, or via
some other means?
On Mon, Dec 14, 2015 at 9:59 AM, Tom Kacvinsky
<tom.kacvinsky at vectorcast.com> wrote:
> Hi Petr,
>
>
> On Mon, Dec 14, 2015 at 10:53 AM, Petr Kmoch <petr.kmoch at gmail.com> wrote:
>> Hi Tom,
>>
>> linking the static archive into the DLL should not be done by
>> add_dependencies(), but by target_link_libraries(). There, you can
>> explicitly list the archive as PRIVATE so that it does not become a part of
>> the linking interface of the DLL:
>>
>> add_library(staticArchive STATIC ...)
>>
>> add_library(theDLL SHARED ...)
>>
>> target_link_libraries(theDLL PRIVATE staticArchive)
>>
>
> Thanks for the tip. I'll try it out. I hope it works as I am not
> using the MSVC tool chain
> to build the DLL (i.e., not using add_library and target_link_libraries).
>
> I sent a separate reply detailing what I am using to build the DLL.
>>
>> On Mon, Dec 14, 2015 at 3:34 PM, Tom Kacvinsky
>> <tom.kacvinsky at vectorcast.com> wrote:
>>>
>>> I am getting link errors because cmake is adding transitive
>>> dependencies. I am building a DLL which depends on a static archive
>>> (and is marked as such with add_dependencies), but when I link an
>>> executable that depends on the DLL, both libraries (import library for
>>> the DLL and static archive) are specified on the link. leading to
>>> duplicate symbol errors as the symbol are exported form the DLL and
>>> defined in the static archive.
>>>
>>> How do I work around this? This is the one thing that has frustrated
>>> me over the last couple of years - I have never received an answer
>>> telling me how to turn off transitive dependencies.
>>>
>>> Sorry for the minor rant.
>>>
>>> Regards,
>>>
>>> Tom
>>> --
>>>
>>> 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:
>>> http://public.kitware.com/mailman/listinfo/cmake
>>
>>
> --
>
> 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:
> http://public.kitware.com/mailman/listinfo/cmake
More information about the CMake
mailing list