mirror of
https://github.com/ttroy50/cmake-examples.git
synced 2025-12-18 12:14:36 +03:00
95 lines
2.2 KiB
Plaintext
95 lines
2.2 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 following:
|
|
|
|
* CMake v3.5+
|
|
* 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.
|
|
|
|
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
|
|
|
|
|
|
----
|