On 03/23/2011 03:21 PM, Chris Volpe ARA/SED wrote: >> You might break this transitivity by explicitly setting >> the LINK_INTERFACE_LIBRARIES target properties of FeatureViewer to "" > > That did it!!!! Thanks, Michael. That's exactly what I needed. > > It's somewhat moot now, but your second suggestion confused me, and I'd like > to understand better: > >> As an alternative, you might use a second invocation >> >> TARGET_LINK_LIBRARIES(FeatureViewer TARGET_LINK_LIBRARIES ...)
Oops: TARGET_LINK_LIBRARIES(FeatureViewer LINK_INTERFACE_LIBRARIES ...) ^^^^^^^^^^^^^^^^^^^^^^^^ > Two questions: > 1. Does a second invocation override the first invocation? > 2. If I remove the VTK libs from this command, wouldn't that leave > FeatureViewer with unresolved symbols? No, for both questions. Each shared library target has a set of transitive libraries, i.e. libraries other targets are additionally linked against if they are linked against the shared library target. As a default, this set consists of those libraries mentioned in the shared library target's TARGET_LINK_LIBRARIES() command invocation. Nevertheless, if the LINK_INTERFACE_LIBRARIES target property has a defined value, this is used for the set of transitive libraries. Now, TARGET_LINK_LIBRARIES() with the LINK_INTERFACE_LIBRARIES clause just adds the specified libraries to the aforementioned property without an impact on the libraries the target is actually linked against. Hence, a second invocation with LINK_INTERFACE_LIBRARIES clause would affect the TestDriver and further depending targets, but not the FeatureViewer one. Regards, Michael > Thanks again for your help!! > > -Chris > > >> -----Original Message----- >> From: cmake-boun...@cmake.org [mailto:cmake-boun...@cmake.org] On >> Behalf Of Michael Hertling >> Sent: Tuesday, March 22, 2011 7:30 PM >> To: cmake@cmake.org >> Subject: Re: [CMake] Building a DLL and test driver EXE using CMake -- >> error by design? >> >> [my original elided for brevity --CRV] >> >> The TARGET_LINK_LIBRARIES() command works transitively, i.e. TestDriver >> will be linked against each shared library that FeatureViewer is linked >> against, too. You might break this transitivity by explicitly setting >> the LINK_INTERFACE_LIBRARIES target properties of FeatureViewer to "" >> or, in general, to the set of libraries which are still to be linked >> transitively. As an alternative, you might use a second invocation >> >> TARGET_LINK_LIBRARIES(FeatureViewer TARGET_LINK_LIBRARIES ...) >> >> in FeatureViewer/CMakeLists.txt to explicitly specify the transitive >> libraries. Of course, the VTK ones should not appear in these lists. >> >> 'hope that helps. >> >> Regards, >> >> 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