INTERFACE_LINK_LIBRARIES won't work since it won't pull out include path for 
dependants.

Using target_link_libraries() on the imported lib does not work because "it is 
not built".

So the question remains open : how to represent include and link dependencies 
between 2 imported libs ?

With regards,

David

PS : as to why I had to have 2 stages (A_imported and A), this is because I 
wanted to add an alias which is not possible on an imported target

Le 7 avril 2017 12:32:52 GMT+01:00, David Jobet <david.jo...@free.fr> a écrit :
>Well not quite.
>I tried that, but my current definition is rather
>Target_link_libraries(B interface B_imported)
>
>I don't remember for which reason I had to do it in 2 stages like that
>(the A/A_imported and B/B_imported versions)
>
>If I add A in the list to read :
>Target_link_libraries(B interface B_imported A)
>
>Then linking against B does add B_imported and A, but it does not keep
>the link order and might put B_imported before A on the command line.
>
>I'll try with property INTERFACE_LINK_LIBRARIES instead, and will also
>try to remove those 2 stages...
>
>With regards
>
>David
>
>Le 6 avril 2017 05:11:46 GMT+01:00, Dvir Yitzchaki
><dvir.yitzch...@ceva-dsp.com> a écrit :
>>target_link_libraries(B INTERFACE A)
>>
>>Regards,
>>Dvir
>>
>>From: CMake [mailto:cmake-boun...@cmake.org] On Behalf Of David Jobet
>>Sent: Wednesday, April 5, 2017 18:34
>>To: cmake@cmake.org
>>Subject: [CMake] Transitive include and link libraries on imported
>>targets ?
>>
>>Hello,
>>
>>Let's say I build some external libs A and B with B depending on A.
>>B and A do not use cmake, so I build them and install them in a
>>3rdparty directory. I now have access to includes and libs.
>>I then create some cmake file to describe those libs so I can use them
>>in my project :
>>Add_library(A_imported STATIC imported)
>>Set_property(TARGET A_imported APPEND PROPERTY
>>INTERFACE_INCLUDE_DIRECTORIES 3rdparty/include/A)
>>Set_property(TARGET A_imported APPEND PROPERTY IMPORTED_LOCATION
>>3rdparty/libs/libA.a)
>>Add_library(A INTERFACE)
>>Target_link_library(A INTERFACE A_imported)
>>
>>Same thing for B
>>
>>Now let's say I create a top-level target T that depends on B.
>>Compilation might fail because B might include files from A and A is
>>currently not a dependency of T.
>>
>>I can fix it in 2 ways :
>>1- add A as a dependency of T, but I will need to do it on all my Ts
>>2- somehow make B have transitive dependencies for include and link on
>>A. That would be my prefered choice... But I don't know how to do it.
>>
>>Is it possible ? How ?
>>
>>Tx for your help.
>>
>>David
>
>-- 
>Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser
>ma brièveté.

-- 
Envoyé de mon appareil Android avec Courriel K-9 Mail. Veuillez excuser ma 
brièveté.
-- 

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 via email to