Quantcast

How to exclude linking from add_subdirectory?

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

How to exclude linking from add_subdirectory?

kipade
In my cmake project, there are some subdirectories within it, and some of them have to build as completed 
static or shared libraries.
1. The top project is executable 
2. a subdirectory is a shared project, which also have some subdirectoy compile as static libraries which
   of course should ONLY link into their parent shared library
I add link options to linking the shared library produced by its subdirectory(which linked as a shared library), 
but I found the all sub-static library with the shared library project(the subdirectory) also double linked into
the top executable project. Of course I only want to link the shared library. How to resolve such problem 
for the top CMakeLists.txt?


 


--

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
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: How to exclude linking from add_subdirectory?

Eric Noulard
You should check the options PUBLIC, PRIVATE, of the target_link_librairies. 

transitive linking is achieved through PUBLIC or INTERFACE whereas PRIVATE does not propagate.
AFAIU your shared lib should PRIVATEly target_link_librairies to your shared lib.
Moreover the way you describe it suggest that your static libs may well be OBJECT libraries:

Next time, posting some excerpt of your CMakeLists.txt would make it easier to answer with example.
Eric

Le 25 mars 2017 6:14 AM, "kipade" <[hidden email]> a écrit :
In my cmake project, there are some subdirectories within it, and some of them have to build as completed 
static or shared libraries.
1. The top project is executable 
2. a subdirectory is a shared project, which also have some subdirectoy compile as static libraries which
   of course should ONLY link into their parent shared library
I add link options to linking the shared library produced by its subdirectory(which linked as a shared library), 
but I found the all sub-static library with the shared library project(the subdirectory) also double linked into
the top executable project. Of course I only want to link the shared library. How to resolve such problem 
for the top CMakeLists.txt?


 


--

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
Loading...