[CMake] Imported libraries and cross platform target names

Nils Gladitz nilsgladitz at gmail.com
Tue Aug 18 15:01:04 EDT 2015


On 18.08.2015 20:29, Ette, Anthony (CDS) wrote:
>
> Given that add_library() produces a unique filename per platform (the 
> “actual file name of the library built is constructed based on 
> conventions of the native platform (such as lib<name>.aor<name>.lib”), 
> how does one add the library to the final application without having 
> to deal with the filename difference?  In other words, I’ve got one 
> library that, by default, produces ‘libtest.a’ on Linux and ‘test.lib’ 
> on Windows.  How can I add this imported library into the final 
> application in a cross platform manner?  I know I can specify two 
> different imported locations (see below), but it seems odd to me that 
> Cmake – the cross-platform build env generator – doesn’t have a better 
> native way of dealing with this….
>
>

Assuming the project producing the libraries and the project consuming 
them are distinct you could export targets from your library project 
with install(EXPORT) and import them in the other project with 
find_package().

Creation of package configuration files (using target exports) is 
explained here:
http://www.cmake.org/cmake/help/v3.3/manual/cmake-packages.7.html#creating-packages

Nils

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/cmake/attachments/20150818/74457f0c/attachment.html>


More information about the CMake mailing list