aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRomain Forlot <romain.forlot@iot.bzh>2017-12-07 13:48:01 +0100
committerRomain Forlot <romain.forlot@iot.bzh>2017-12-07 13:48:01 +0100
commitee5d60f9d169d959cca9dc24cfc3776ed06c163c (patch)
tree74abca35b8b4284289b82f2c879db1b16679168f
parentf3954e8390b24c32a47bd543c25cdad80b59eb27 (diff)
Update README with latest docs modifications
Change-Id: If00a115e7f58ed6f2fcd6d4ebe00d96df58c0747 Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
-rw-r--r--README.md38
1 files changed, 36 insertions, 2 deletions
diff --git a/README.md b/README.md
index 64f3379..218ce30 100644
--- a/README.md
+++ b/README.md
@@ -283,7 +283,12 @@ SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
> targets. This is already handle by template and will be installed in the
> following path : **${CMAKE_INSTALL_PREFIX}/${PROJECT_NAME}**
-#### Add external 3rd party library
+> **NOTE**: if you want to set and use `rpath` with your target you should use
+> and set the target property `INSTALL_RPATH`.
+
+## Add external 3rd party library
+
+### Build, link and ship external library with the project
You could need to include an external library that isn't shipped in the
platform. Then you have to bundle the required library in the `lib` widget
@@ -329,9 +334,13 @@ add_dependencies(${TARGET_NAME} ${MXML})
Here we define an external project that drive the build of the library then we
define new CMake target of type **IMPORTED**. Meaning that this target hasn't
-be built using CMake but is available at the location defined in the target
+been built using CMake but is available at the location defined in the target
property *IMPORTED_LOCATION*.
+You could want to build the library as *SHARED* or *STATIC* depending on your needs
+and goals. Then you only have to modify the external project configure step and change
+filename used by **IMPORTED** library target defined after external project.
+
Then target *LABELS* property is set to **LIBRARY** to ship it in the widget.
Unicens project also need some header from this library, so we use the target
@@ -340,6 +349,31 @@ to that imported target, it can access to the include directories.
We bound the target to the external project using a CMake dependency at last.
+Then this target could be use like any other CMake target and be linked etc.
+
+### Only link and ship external library with the project
+
+If you already have a binary version of the library that you want to use and you
+can't or don't want to build the library then you only have to add an **IMPORTED**
+library target.
+
+So, taking the above example, `mxml` library inclusion would be:
+
+```cmake
+PROJECT_TARGET_ADD(mxml)
+
+add_library(${TARGET_NAME} SHARED IMPORTED GLOBAL)
+
+SET_TARGET_PROPERTIES(${TARGET_NAME} PROPERTIES
+ LABELS LIBRARY
+ IMPORTED_LOCATION /path/to/library/libmxml.so.1
+ INTERFACE_INCLUDE_DIRECTORIES /path/to/mxml/include/dir
+)
+```
+
+Finally, you can link any other lib or executable target with this imported
+library like any other target.
+
#### Macro reference
##### PROJECT_TARGET_ADD