Files
cmake-examples/01-basic/K-imported-targets/README.adoc
2016-08-19 22:28:42 +01:00

93 lines
2.3 KiB
Plaintext

= Imported Targets
:toc:
:toc-placement!:
toc::[]
# Introduction
As previously mentioned in the link:../H-third-party-library[third party library], newer
versions of CMake alow you to link third party libraries using link:https://cmake.org/cmake/help/v3.6/prop_tgt/IMPORTED.html#prop_tgt:IMPORTED[imported] +ALIAS+ targets.
The files in this tutorial are below:
```
$ tree
.
├── CMakeLists.txt
├── main.cpp
```
* link:CMakeLists.txt[] - Contains the CMake commands you wish to run
* link:main.cpp[] - The source file with main
# Requirements
This example requires the boost libraries to be installed in a default system location.
# Concepts
## Imported Target
Imported targets are read-only targets that are exported by FindXXX modules. The benefit of imported
targets are that they can also populate include directories and linked libraries.
To include boost filesystem you can do the following:
[source,cmake]
----
target_link_libraries( imported_targets
PRIVATE
Boost::filesystem
)
----
This will automtaically link the Boost::filesystem and Boost::system libraries while also including the
Boost include directories.
# Building the Example
[source,bash]
----
$ mkdir build
$ cd build/
$ cmake ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Boost version: 1.58.0
-- Found the following Boost libraries:
-- filesystem
-- system
boost found
-- Configuring done
-- Generating done
-- Build files have been written to: /data/code/01-basic/K-imported-targets/build
$ make
Scanning dependencies of target imported_targets
[ 50%] Building CXX object CMakeFiles/imported_targets.dir/main.cpp.o
[100%] Linking CXX executable imported_targets
[100%] Built target imported_targets
$ ./imported_targets
Hello Third Party Include!
Path is not relative
----