hpp-tutorial 9.0.0__0-py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cmeel.prefix/include/hpp/tutorial/config.hh +94 -0
- cmeel.prefix/include/hpp/tutorial/deprecated.hh +56 -0
- cmeel.prefix/include/hpp/tutorial/warning.hh +35 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/cxx-standard.cmake +193 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/hpp_tutorialConfig.cmake +209 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/hpp_tutorialConfigVersion.cmake +65 -0
- cmeel.prefix/lib/cmake/hpp_tutorial/hpp_tutorialTargets.cmake +102 -0
- cmeel.prefix/lib/pkgconfig/hpp_tutorial.pc +22 -0
- cmeel.prefix/share/ament_index/resource_index/packages/hpp_tutorial +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/auf_saeule_bei_shop.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/ganz_links_neben_roboterplakat.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/ganz_links_vorn_bei_biolab.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/ganz_rechts_neben_kuecheninsel.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/hinter_shopschraenken_an_saeule.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/mittig_neben_roboterplakat.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/sink.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/stove.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper2.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper_ai_unihb.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/materials/textures/wallpaper_project_logos.png +0 -0
- cmeel.prefix/share/hpp_tutorial/Media/models/meshes/glasses/__Color_A05_4.png +0 -0
- cmeel.prefix/share/hpp_tutorial/hook/ament_prefix_path.dsv +1 -0
- cmeel.prefix/share/hpp_tutorial/hook/python_path.dsv +1 -0
- cmeel.prefix/share/hpp_tutorial/launch/config.rviz +475 -0
- cmeel.prefix/share/hpp_tutorial/launch/tutorial_7_launch.py +124 -0
- cmeel.prefix/share/hpp_tutorial/launch/tutorial_8_launch.py +193 -0
- cmeel.prefix/share/hpp_tutorial/meshes/box.dae +601 -0
- cmeel.prefix/share/hpp_tutorial/meshes/drill.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/base_link.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_1.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_2.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_3.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_4.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_5.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/collision/link_6.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/base_link.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_1.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_2.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_3.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_4.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_5.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/meshes/staubli-tx2-90/visual/link_6.stl +0 -0
- cmeel.prefix/share/hpp_tutorial/package.xml +20 -0
- cmeel.prefix/share/hpp_tutorial/srdf/box.srdf +13 -0
- cmeel.prefix/share/hpp_tutorial/srdf/cup.srdf +22 -0
- cmeel.prefix/share/hpp_tutorial/srdf/door.srdf +14 -0
- cmeel.prefix/share/hpp_tutorial/srdf/fr3.srdf +92 -0
- cmeel.prefix/share/hpp_tutorial/srdf/ground.srdf +8 -0
- cmeel.prefix/share/hpp_tutorial/srdf/kitchen_area.srdf +11770 -0
- cmeel.prefix/share/hpp_tutorial/srdf/panda.srdf +76 -0
- cmeel.prefix/share/hpp_tutorial/srdf/rod.srdf +2 -0
- cmeel.prefix/share/hpp_tutorial/srdf/staubli-drill.srdf +14 -0
- cmeel.prefix/share/hpp_tutorial/srdf/table.srdf +16 -0
- cmeel.prefix/share/hpp_tutorial/tutorial_7/controllers.yaml +28 -0
- cmeel.prefix/share/hpp_tutorial/tutorial_8/controllers.yaml +44 -0
- cmeel.prefix/share/hpp_tutorial/urdf/box.urdf +26 -0
- cmeel.prefix/share/hpp_tutorial/urdf/box_color.urdf +16 -0
- cmeel.prefix/share/hpp_tutorial/urdf/cup.urdf +26 -0
- cmeel.prefix/share/hpp_tutorial/urdf/door.urdf +111 -0
- cmeel.prefix/share/hpp_tutorial/urdf/fr3.urdf +452 -0
- cmeel.prefix/share/hpp_tutorial/urdf/ground.urdf +20 -0
- cmeel.prefix/share/hpp_tutorial/urdf/kitchen_area.urdf +4729 -0
- cmeel.prefix/share/hpp_tutorial/urdf/kitchen_area_obstacle.urdf +4729 -0
- cmeel.prefix/share/hpp_tutorial/urdf/obstacle.urdf +18 -0
- cmeel.prefix/share/hpp_tutorial/urdf/rod.urdf +19 -0
- cmeel.prefix/share/hpp_tutorial/urdf/square-plate.urdf +17 -0
- cmeel.prefix/share/hpp_tutorial/urdf/staubli-drill.urdf +254 -0
- cmeel.prefix/share/hpp_tutorial/urdf/table.urdf +160 -0
- hpp_tutorial-9.0.0.dist-info/METADATA +36 -0
- hpp_tutorial-9.0.0.dist-info/RECORD +74 -0
- hpp_tutorial-9.0.0.dist-info/WHEEL +6 -0
- hpp_tutorial-9.0.0.dist-info/licenses/LICENSE +24 -0
- hpp_tutorial-9.0.0.dist-info/top_level.txt +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file has been automatically generated by the jrl-cmakemodules.
|
|
3
|
+
* Please see https://github.com/jrl-umi3218/jrl-cmakemodules/blob/master/config.hh.cmake for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef HPP_TUTORIAL_CONFIG_HH
|
|
7
|
+
# define HPP_TUTORIAL_CONFIG_HH
|
|
8
|
+
|
|
9
|
+
// Package version (header).
|
|
10
|
+
# define HPP_TUTORIAL_VERSION_UNKNOWN_TAG 0 // Used to mention that the current version is unknown.
|
|
11
|
+
# define HPP_TUTORIAL_VERSION "9.0.0"
|
|
12
|
+
# define HPP_TUTORIAL_MAJOR_VERSION 9
|
|
13
|
+
# define HPP_TUTORIAL_MINOR_VERSION 0
|
|
14
|
+
# define HPP_TUTORIAL_PATCH_VERSION 0
|
|
15
|
+
|
|
16
|
+
#define HPP_TUTORIAL_VERSION_AT_LEAST(major, minor, patch) (HPP_TUTORIAL_MAJOR_VERSION>major || (HPP_TUTORIAL_MAJOR_VERSION>=major && \
|
|
17
|
+
(HPP_TUTORIAL_MINOR_VERSION>minor || (HPP_TUTORIAL_MINOR_VERSION>=minor && \
|
|
18
|
+
HPP_TUTORIAL_PATCH_VERSION>=patch))))
|
|
19
|
+
|
|
20
|
+
#define HPP_TUTORIAL_VERSION_AT_MOST(major, minor, patch) (HPP_TUTORIAL_MAJOR_VERSION<major || (HPP_TUTORIAL_MAJOR_VERSION<=major && \
|
|
21
|
+
(HPP_TUTORIAL_MINOR_VERSION<minor || (HPP_TUTORIAL_MINOR_VERSION<=minor && \
|
|
22
|
+
HPP_TUTORIAL_PATCH_VERSION<=patch))))
|
|
23
|
+
|
|
24
|
+
// Handle portable symbol export.
|
|
25
|
+
// Defining manually which symbol should be exported is required
|
|
26
|
+
// under Windows whether MinGW or MSVC is used.
|
|
27
|
+
//
|
|
28
|
+
// The headers then have to be able to work in two different modes:
|
|
29
|
+
// - dllexport when one is building the library,
|
|
30
|
+
// - dllimport for clients using the library.
|
|
31
|
+
//
|
|
32
|
+
// On Linux, set the visibility accordingly. If C++ symbol visibility
|
|
33
|
+
// is handled by the compiler, see: http://gcc.gnu.org/wiki/Visibility
|
|
34
|
+
//
|
|
35
|
+
// Explicit template instantiation on Windows need to add
|
|
36
|
+
// dllexport on the definition and dllimport on the declaration.
|
|
37
|
+
// The XXX_EXPLICIT_INSTANTIATION_DECLARATION_DLLAPI macro
|
|
38
|
+
// should be set on the declaration while
|
|
39
|
+
// the XXX_EXPLICIT_INSTANTIATION_DEFINITION_DLLAPI macro
|
|
40
|
+
// should be set on the definition.
|
|
41
|
+
# if defined _WIN32 || defined __CYGWIN__
|
|
42
|
+
// On Microsoft Windows, use dllimport and dllexport to tag symbols.
|
|
43
|
+
# define HPP_TUTORIAL_DLLIMPORT __declspec(dllimport)
|
|
44
|
+
# define HPP_TUTORIAL_DLLEXPORT __declspec(dllexport)
|
|
45
|
+
# define HPP_TUTORIAL_DLLLOCAL
|
|
46
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT __declspec(dllimport)
|
|
47
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT
|
|
48
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT __declspec(dllimport)
|
|
49
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT __declspec(dllexport)
|
|
50
|
+
# else
|
|
51
|
+
// On Linux, for GCC >= 4, tag symbols using GCC extension.
|
|
52
|
+
# if __GNUC__ >= 4
|
|
53
|
+
# define HPP_TUTORIAL_DLLIMPORT __attribute__ ((visibility("default")))
|
|
54
|
+
# define HPP_TUTORIAL_DLLEXPORT __attribute__ ((visibility("default")))
|
|
55
|
+
# define HPP_TUTORIAL_DLLLOCAL __attribute__ ((visibility("hidden")))
|
|
56
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT __attribute__ ((visibility("default")))
|
|
57
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT __attribute__ ((visibility("default")))
|
|
58
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT
|
|
59
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT
|
|
60
|
+
# else
|
|
61
|
+
// Otherwise (GCC < 4 or another compiler is used), export everything.
|
|
62
|
+
# define HPP_TUTORIAL_DLLIMPORT
|
|
63
|
+
# define HPP_TUTORIAL_DLLEXPORT
|
|
64
|
+
# define HPP_TUTORIAL_DLLLOCAL
|
|
65
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT
|
|
66
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT
|
|
67
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT
|
|
68
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT
|
|
69
|
+
# endif // __GNUC__ >= 4
|
|
70
|
+
# endif // defined _WIN32 || defined __CYGWIN__
|
|
71
|
+
|
|
72
|
+
# ifdef HPP_TUTORIAL_STATIC
|
|
73
|
+
// If one is using the library statically, get rid of
|
|
74
|
+
// extra information and use standard explicit template
|
|
75
|
+
// instantiation keyword.
|
|
76
|
+
# define HPP_TUTORIAL_DLLAPI
|
|
77
|
+
# define HPP_TUTORIAL_LOCAL
|
|
78
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION extern template
|
|
79
|
+
# else
|
|
80
|
+
// Depending on whether one is building or using the
|
|
81
|
+
// library define DLLAPI to import or export and
|
|
82
|
+
// define the right explicit template instantiation keyword.
|
|
83
|
+
# ifdef hpp_tutorial_EXPORTS
|
|
84
|
+
# define HPP_TUTORIAL_DLLAPI HPP_TUTORIAL_DLLEXPORT
|
|
85
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLAPI HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLEXPORT
|
|
86
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLAPI HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLEXPORT
|
|
87
|
+
# else
|
|
88
|
+
# define HPP_TUTORIAL_DLLAPI HPP_TUTORIAL_DLLIMPORT
|
|
89
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLAPI HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DECLARATION_DLLIMPORT
|
|
90
|
+
# define HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLAPI HPP_TUTORIAL_EXPLICIT_INSTANTIATION_DEFINITION_DLLIMPORT
|
|
91
|
+
# endif // HPP_TUTORIAL_EXPORTS
|
|
92
|
+
# define HPP_TUTORIAL_LOCAL HPP_TUTORIAL_DLLLOCAL
|
|
93
|
+
# endif // HPP_TUTORIAL_STATIC
|
|
94
|
+
#endif //! HPP_TUTORIAL_CONFIG_HH
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file has been automatically generated by the jrl-cmakemodules.
|
|
3
|
+
* Please see https://github.com/jrl-umi3218/jrl-cmakemodules/blob/master/deprecated.hh.cmake for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef HPP_TUTORIAL_DEPRECATED_HH
|
|
7
|
+
# define HPP_TUTORIAL_DEPRECATED_HH
|
|
8
|
+
|
|
9
|
+
// Define a suffix which can be used to tag a type, a function or a a
|
|
10
|
+
// variable as deprecated (i.e. it will emit a warning when using it).
|
|
11
|
+
//
|
|
12
|
+
// Tagging a function as deprecated:
|
|
13
|
+
// void foo () HPP_TUTORIAL_DEPRECATED;
|
|
14
|
+
//
|
|
15
|
+
// Tagging a type as deprecated:
|
|
16
|
+
// class Foo {};
|
|
17
|
+
// typedef Foo Bar HPP_TUTORIAL_DEPRECATED;
|
|
18
|
+
//
|
|
19
|
+
// Tagging a variable as deprecated:
|
|
20
|
+
// int a HPP_TUTORIAL_DEPRECATED = 0;
|
|
21
|
+
//
|
|
22
|
+
// The use of a macro is required as this is /not/ a standardized
|
|
23
|
+
// feature of C++ language or preprocessor, even if most of the
|
|
24
|
+
// compilers support it.
|
|
25
|
+
# if defined(__cplusplus) && (__cplusplus >= 201402L)
|
|
26
|
+
# define HPP_TUTORIAL_DEPRECATED [[deprecated]]
|
|
27
|
+
# define HPP_TUTORIAL_DEPRECATED_MESSAGE(message) [[deprecated(#message)]]
|
|
28
|
+
# elif defined(__GNUC__) || defined(__clang__)
|
|
29
|
+
# define HPP_TUTORIAL_DEPRECATED __attribute__ ((deprecated))
|
|
30
|
+
# define HPP_TUTORIAL_DEPRECATED_MESSAGE(message) __attribute__ (( deprecated(#message) ))
|
|
31
|
+
# else
|
|
32
|
+
# if defined(_MSC_VER) && !defined(__INTEL_COMPILER)
|
|
33
|
+
# define HPP_TUTORIAL_DEPRECATED __declspec (deprecated)
|
|
34
|
+
# define HPP_TUTORIAL_DEPRECATED_MESSAGE(message) __declspec ( deprecated(#message) )
|
|
35
|
+
# else
|
|
36
|
+
// If the compiler is not recognized, drop the feature.
|
|
37
|
+
# define HPP_TUTORIAL_DEPRECATED /* nothing */
|
|
38
|
+
# define HPP_TUTORIAL_DEPRECATED_MESSAGE(message)
|
|
39
|
+
# endif // __MSVC__
|
|
40
|
+
# endif // __cplusplus
|
|
41
|
+
|
|
42
|
+
# if defined(__GNUC__) || defined(__clang__)
|
|
43
|
+
# ifndef HPP_TUTORIAL_PRAGMA
|
|
44
|
+
# define HPP_TUTORIAL_PRAGMA(X) _Pragma(#X)
|
|
45
|
+
# endif
|
|
46
|
+
# define HPP_TUTORIAL_DEPRECATED_HEADER(MSG) HPP_TUTORIAL_PRAGMA(GCC warning MSG)
|
|
47
|
+
# elif defined(_MSC_VER) && !defined(__INTEL_COMPILER)
|
|
48
|
+
# define HPP_TUTORIAL_STRINGIZE_(MSG) #MSG
|
|
49
|
+
# define HPP_TUTORIAL_STRINGIZE(MSG) HPP_TUTORIAL_STRINGIZE_(MSG)
|
|
50
|
+
# define HPP_TUTORIAL_DEPRECATED_HEADER(MSG) \
|
|
51
|
+
__pragma(message(__FILE__ "(" HPP_TUTORIAL_STRINGIZE(__LINE__) ") : Warning: " MSG))
|
|
52
|
+
# else
|
|
53
|
+
# define HPP_TUTORIAL_DEPRECATED_HEADER(MSG)
|
|
54
|
+
# endif
|
|
55
|
+
|
|
56
|
+
#endif //! HPP_TUTORIAL_DEPRECATED_HH
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This file has been automatically generated by the jrl-cmakemodules.
|
|
3
|
+
* Please see https://github.com/jrl-umi3218/jrl-cmakemodules/blob/master/warning.hh.cmake for details.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
#ifndef HPP_TUTORIAL_WARNING_HH
|
|
7
|
+
# define HPP_TUTORIAL_WARNING_HH
|
|
8
|
+
|
|
9
|
+
// Emits a warning in a portable way.
|
|
10
|
+
//
|
|
11
|
+
// To emit a warning, one can insert:
|
|
12
|
+
//
|
|
13
|
+
// #pragma message HPP_TUTORIAL_WARN("your warning message here")
|
|
14
|
+
//
|
|
15
|
+
// The use of this syntax is required as this is /not/ a standardized
|
|
16
|
+
// feature of C++ language or preprocessor, even if most of the
|
|
17
|
+
// compilers support it.
|
|
18
|
+
|
|
19
|
+
# define HPP_TUTORIAL_WARN_STRINGISE_IMPL(x) #x
|
|
20
|
+
# define HPP_TUTORIAL_WARN_STRINGISE(x) \
|
|
21
|
+
HPP_TUTORIAL_WARN_STRINGISE_IMPL(x)
|
|
22
|
+
# ifdef __GNUC__
|
|
23
|
+
# define HPP_TUTORIAL_WARN(exp) ("WARNING: " exp)
|
|
24
|
+
# else
|
|
25
|
+
# ifdef _MSC_VER
|
|
26
|
+
# define FILE_LINE_LINK __FILE__ "(" \
|
|
27
|
+
HPP_TUTORIAL_WARN_STRINGISE(__LINE__) ") : "
|
|
28
|
+
# define HPP_TUTORIAL_WARN(exp) (FILE_LINE_LINK "WARNING: " exp)
|
|
29
|
+
# else
|
|
30
|
+
// If the compiler is not recognized, drop the feature.
|
|
31
|
+
# define HPP_TUTORIAL_WARN(MSG) /* nothing */
|
|
32
|
+
# endif // __MSVC__
|
|
33
|
+
# endif // __GNUC__
|
|
34
|
+
|
|
35
|
+
#endif //! HPP_TUTORIAL_WARNING_HH
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (C) 2020 LAAS-CNRS
|
|
3
|
+
#
|
|
4
|
+
# Author: Guilhem Saurel
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
# .rst: .. ifmode:: internal
|
|
8
|
+
#
|
|
9
|
+
# .. variable:: ENFORCE_MINIMAL_CXX_STANDARD
|
|
10
|
+
#
|
|
11
|
+
# When this is ON, every call to :cmake:command:`CHECK_MINIMAL_CXX_STANDARD`
|
|
12
|
+
# updates the :cmake:variable:`CMAKE_CXX_STANDARD`.
|
|
13
|
+
option(
|
|
14
|
+
ENFORCE_MINIMAL_CXX_STANDARD
|
|
15
|
+
"Set CMAKE_CXX_STANDARD if a dependency require it"
|
|
16
|
+
OFF
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
# .rst: .. ifmode:: user
|
|
20
|
+
#
|
|
21
|
+
# .. command:: CHECK_MINIMAL_CXX_STANDARD(STANDARD [ENFORCE])
|
|
22
|
+
#
|
|
23
|
+
# Ensure that a minimal C++ standard will be used.
|
|
24
|
+
#
|
|
25
|
+
# This will check the default standard of the current compiler, and set
|
|
26
|
+
# :cmake:variable:`CMAKE_CXX_STANDARD` if necessary, and `ENFORCE` is provided,
|
|
27
|
+
# or :cmake:variable:`ENFORCE_MINIMAL_CXX_STANDARD` is `ON`. Multiple calls to
|
|
28
|
+
# this macro will keep the highest standard.
|
|
29
|
+
#
|
|
30
|
+
# Supported values are 98, 11, 14, 17, and 20.
|
|
31
|
+
#
|
|
32
|
+
macro(CHECK_MINIMAL_CXX_STANDARD STANDARD)
|
|
33
|
+
set(options ENFORCE)
|
|
34
|
+
set(oneValueArgs)
|
|
35
|
+
set(multiValueArgs)
|
|
36
|
+
cmake_parse_arguments(
|
|
37
|
+
MINIMAL_CXX_STANDARD
|
|
38
|
+
"${options}"
|
|
39
|
+
"${oneValueArgs}"
|
|
40
|
+
"${multiValueArgs}"
|
|
41
|
+
${ARGN}
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
# Get compiler default cxx standard, by printing "__cplusplus" (only once)
|
|
45
|
+
if(
|
|
46
|
+
NOT DEFINED _COMPILER_DEFAULT_CXX_STANDARD
|
|
47
|
+
AND
|
|
48
|
+
(
|
|
49
|
+
NOT CMAKE_CROSSCOMPILING
|
|
50
|
+
OR (CMAKE_CROSSCOMPILING AND CMAKE_CROSSCOMPILING_EMULATOR)
|
|
51
|
+
)
|
|
52
|
+
)
|
|
53
|
+
if(MSVC)
|
|
54
|
+
# See
|
|
55
|
+
# https://devblogs.microsoft.com/cppblog/msvc-now-correctly-reports-__cplusplus/
|
|
56
|
+
string(APPEND CMAKE_CXX_FLAGS " /Zc:__cplusplus")
|
|
57
|
+
endif()
|
|
58
|
+
write_file(
|
|
59
|
+
${CMAKE_CURRENT_BINARY_DIR}/cmake/tmp-cxx-standard.cpp
|
|
60
|
+
"#include <iostream>\nint main(){std::cout << __cplusplus << std::endl;return 0;}"
|
|
61
|
+
)
|
|
62
|
+
try_run(
|
|
63
|
+
_cxx_standard_run_status
|
|
64
|
+
_cxx_standard_build_status
|
|
65
|
+
${CMAKE_CURRENT_BINARY_DIR}
|
|
66
|
+
${CMAKE_CURRENT_BINARY_DIR}/cmake/tmp-cxx-standard.cpp
|
|
67
|
+
RUN_OUTPUT_VARIABLE _COMPILER_DEFAULT_CXX_STANDARD
|
|
68
|
+
)
|
|
69
|
+
if(
|
|
70
|
+
_cxx_standard_run_status EQUAL FAILED_TO_RUN
|
|
71
|
+
OR NOT _cxx_standard_build_status
|
|
72
|
+
)
|
|
73
|
+
message(
|
|
74
|
+
WARNING
|
|
75
|
+
"Impossible to build or run the script to retrive the _COMPILER_DEFAULT_CXX_STANDARD quantity from current compiler. Setting _COMPILER_DEFAULT_CXX_STANDARD to 199711"
|
|
76
|
+
)
|
|
77
|
+
set(_COMPILER_DEFAULT_CXX_STANDARD "199711")
|
|
78
|
+
endif()
|
|
79
|
+
string(
|
|
80
|
+
STRIP "${_COMPILER_DEFAULT_CXX_STANDARD}"
|
|
81
|
+
_COMPILER_DEFAULT_CXX_STANDARD
|
|
82
|
+
)
|
|
83
|
+
message(STATUS "Default C++ standard: ${_COMPILER_DEFAULT_CXX_STANDARD}")
|
|
84
|
+
endif()
|
|
85
|
+
|
|
86
|
+
# Check if we need to upgrade the current minimum
|
|
87
|
+
if(
|
|
88
|
+
NOT DEFINED _MINIMAL_CXX_STANDARD
|
|
89
|
+
OR
|
|
90
|
+
(
|
|
91
|
+
NOT ${STANDARD} EQUAL "98"
|
|
92
|
+
AND
|
|
93
|
+
(
|
|
94
|
+
_MINIMAL_CXX_STANDARD EQUAL "98"
|
|
95
|
+
OR _MINIMAL_CXX_STANDARD LESS ${STANDARD}
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
)
|
|
99
|
+
set(_MINIMAL_CXX_STANDARD "${STANDARD}" CACHE INTERNAL "")
|
|
100
|
+
message(STATUS "Minimal C++ standard upgraded to ${_MINIMAL_CXX_STANDARD}")
|
|
101
|
+
endif()
|
|
102
|
+
|
|
103
|
+
# Check if a non-trivial minimum has been requested
|
|
104
|
+
if(DEFINED _MINIMAL_CXX_STANDARD AND NOT _MINIMAL_CXX_STANDARD EQUAL 98)
|
|
105
|
+
if(DEFINED CMAKE_CXX_STANDARD)
|
|
106
|
+
set(_CURRENT_STANDARD ${CMAKE_CXX_STANDARD})
|
|
107
|
+
elseif(DEFINED _COMPILER_DEFAULT_CXX_STANDARD)
|
|
108
|
+
# ref
|
|
109
|
+
# https://en.cppreference.com/w/cpp/preprocessor/replace#Predefined_macros
|
|
110
|
+
# for constants
|
|
111
|
+
if(_COMPILER_DEFAULT_CXX_STANDARD EQUAL 199711)
|
|
112
|
+
set(_CURRENT_STANDARD 98)
|
|
113
|
+
elseif(_COMPILER_DEFAULT_CXX_STANDARD EQUAL 201103)
|
|
114
|
+
set(_CURRENT_STANDARD 11)
|
|
115
|
+
elseif(_COMPILER_DEFAULT_CXX_STANDARD EQUAL 201402)
|
|
116
|
+
set(_CURRENT_STANDARD 14)
|
|
117
|
+
elseif(_COMPILER_DEFAULT_CXX_STANDARD EQUAL 201703)
|
|
118
|
+
set(_CURRENT_STANDARD 17)
|
|
119
|
+
# C++20: g++-9 defines c++2a with literal 201709, g++-11 & clang-10
|
|
120
|
+
# define c++2a with literal 202002
|
|
121
|
+
elseif(
|
|
122
|
+
_COMPILER_DEFAULT_CXX_STANDARD EQUAL 201709
|
|
123
|
+
OR _COMPILER_DEFAULT_CXX_STANDARD EQUAL 202002
|
|
124
|
+
)
|
|
125
|
+
set(_CURRENT_STANDARD 20)
|
|
126
|
+
else()
|
|
127
|
+
message(
|
|
128
|
+
FATAL_ERROR
|
|
129
|
+
"Unknown current C++ standard ${_COMPILER_DEFAULT_CXX_STANDARD} while trying to check for >= ${_MINIMAL_CXX_STANDARD}"
|
|
130
|
+
)
|
|
131
|
+
endif()
|
|
132
|
+
else()
|
|
133
|
+
set(_CURRENT_STANDARD 98)
|
|
134
|
+
endif()
|
|
135
|
+
|
|
136
|
+
# Check that the requested minimum is higher than the currently selected
|
|
137
|
+
if(
|
|
138
|
+
_CURRENT_STANDARD EQUAL 98
|
|
139
|
+
OR _CURRENT_STANDARD LESS _MINIMAL_CXX_STANDARD
|
|
140
|
+
)
|
|
141
|
+
message(
|
|
142
|
+
STATUS
|
|
143
|
+
"Incompatible C++ standard detected: upgrade required from ${_CURRENT_STANDARD} to >= ${_MINIMAL_CXX_STANDARD}"
|
|
144
|
+
)
|
|
145
|
+
# Check that the requested minimum is higher than any pre-existing
|
|
146
|
+
# CMAKE_CXX_STANDARD
|
|
147
|
+
if(
|
|
148
|
+
NOT CMAKE_CXX_STANDARD
|
|
149
|
+
OR CMAKE_CXX_STANDARD EQUAL 98
|
|
150
|
+
OR CMAKE_CXX_STANDARD LESS _MINIMAL_CXX_STANDARD
|
|
151
|
+
)
|
|
152
|
+
# Throw error if a specific version is required and the currently
|
|
153
|
+
# desired one is incompatible
|
|
154
|
+
if(CMAKE_CXX_STANDARD_REQUIRED)
|
|
155
|
+
message(
|
|
156
|
+
FATAL_ERROR
|
|
157
|
+
"CMAKE_CXX_STANDARD_REQUIRED set - cannot upgrade incompatible standard"
|
|
158
|
+
)
|
|
159
|
+
endif()
|
|
160
|
+
# Enforcing a standard version is required - check if we can upgrade
|
|
161
|
+
# automatically
|
|
162
|
+
if(ENFORCE_MINIMAL_CXX_STANDARD OR MINIMAL_CXX_STANDARD_ENFORCE)
|
|
163
|
+
set(CMAKE_CXX_STANDARD ${_MINIMAL_CXX_STANDARD})
|
|
164
|
+
message(
|
|
165
|
+
STATUS
|
|
166
|
+
"CMAKE_CXX_STANDARD automatically upgraded from ${_CURRENT_STANDARD} to ${CMAKE_CXX_STANDARD}"
|
|
167
|
+
)
|
|
168
|
+
else()
|
|
169
|
+
message(
|
|
170
|
+
FATAL_ERROR
|
|
171
|
+
"CMAKE_CXX_STANDARD upgrade from ${_CURRENT_STANDARD} to >= ${_MINIMAL_CXX_STANDARD} required"
|
|
172
|
+
)
|
|
173
|
+
endif()
|
|
174
|
+
endif()
|
|
175
|
+
else() # requested minimum is higher than the currently selected
|
|
176
|
+
message(
|
|
177
|
+
STATUS
|
|
178
|
+
"C++ standard sufficient: Minimal required ${_MINIMAL_CXX_STANDARD}, currently defined: ${_CURRENT_STANDARD}"
|
|
179
|
+
)
|
|
180
|
+
# current C++ standard was not set in CMake but we enforce it
|
|
181
|
+
if(
|
|
182
|
+
NOT DEFINED CMAKE_CXX_STANDARD
|
|
183
|
+
AND (ENFORCE_MINIMAL_CXX_STANDARD OR MINIMAL_CXX_STANDARD_ENFORCE)
|
|
184
|
+
)
|
|
185
|
+
message(
|
|
186
|
+
STATUS
|
|
187
|
+
"CMAKE_CXX_STANDARD was not set: automatically set to currently defined standard ${_CURRENT_STANDARD}"
|
|
188
|
+
)
|
|
189
|
+
set(CMAKE_CXX_STANDARD ${_CURRENT_STANDARD})
|
|
190
|
+
endif()
|
|
191
|
+
endif() # requested minimum is higher than the currently selected
|
|
192
|
+
endif()
|
|
193
|
+
endmacro()
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
|
|
2
|
+
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
|
|
3
|
+
####### Any changes to this file will be overwritten by the next CMake run ####
|
|
4
|
+
####### The input file was Config.cmake.in ########
|
|
5
|
+
|
|
6
|
+
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
|
|
7
|
+
|
|
8
|
+
macro(set_and_check _var _file)
|
|
9
|
+
set(${_var} "${_file}")
|
|
10
|
+
if(NOT EXISTS "${_file}")
|
|
11
|
+
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
|
|
12
|
+
endif()
|
|
13
|
+
endmacro()
|
|
14
|
+
|
|
15
|
+
macro(check_required_components _NAME)
|
|
16
|
+
foreach(comp ${${_NAME}_FIND_COMPONENTS})
|
|
17
|
+
if(NOT ${_NAME}_${comp}_FOUND)
|
|
18
|
+
if(${_NAME}_FIND_REQUIRED_${comp})
|
|
19
|
+
set(${_NAME}_FOUND FALSE)
|
|
20
|
+
endif()
|
|
21
|
+
endif()
|
|
22
|
+
endforeach()
|
|
23
|
+
endmacro()
|
|
24
|
+
|
|
25
|
+
####################################################################################
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
set(skip_this_file TRUE)
|
|
30
|
+
if(NOT hpp_tutorial_FOUND)
|
|
31
|
+
set(skip_this_file FALSE)
|
|
32
|
+
endif()
|
|
33
|
+
if(skip_this_file)
|
|
34
|
+
foreach(component ${hpp_tutorial_FIND_COMPONENTS})
|
|
35
|
+
if(NOT "hpp_tutorial_${component}_FOUND")
|
|
36
|
+
set(skip_this_file FALSE)
|
|
37
|
+
endif()
|
|
38
|
+
endforeach()
|
|
39
|
+
endif()
|
|
40
|
+
if(skip_this_file)
|
|
41
|
+
return()
|
|
42
|
+
endif()
|
|
43
|
+
|
|
44
|
+
set("hpp_tutorial_INCLUDE_DIRS" "${PACKAGE_PREFIX_DIR}/include")
|
|
45
|
+
set("HPP_TUTORIAL_INCLUDE_DIRS" "${PACKAGE_PREFIX_DIR}/include")
|
|
46
|
+
set("hpp_tutorial_DOXYGENDOCDIR" "${PACKAGE_PREFIX_DIR}/share/doc/hpp_tutorial/doxygen-html")
|
|
47
|
+
set(
|
|
48
|
+
"HPP_TUTORIAL_DOXYGENDOCDIR"
|
|
49
|
+
"${PACKAGE_PREFIX_DIR}/share/doc/hpp_tutorial/doxygen-html"
|
|
50
|
+
)
|
|
51
|
+
set("hpp_tutorial_DEPENDENCIES" "hpp-manipulation;example-robot-data;hpp-gepetto-viewer")
|
|
52
|
+
set("hpp_tutorial_PKG_CONFIG_DEPENDENCIES" "")
|
|
53
|
+
|
|
54
|
+
set(
|
|
55
|
+
CMAKE_MODULE_PATH
|
|
56
|
+
${CMAKE_MODULE_PATH}
|
|
57
|
+
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# Find absolute library paths for all _PKG_CONFIG_LIBS as CMake expects full paths, while pkg-config does not.
|
|
61
|
+
set(_PACKAGE_CONFIG_LIBRARIES "")
|
|
62
|
+
set("_hpp_tutorial_PKG_CONFIG_LIBDIR" "${pcfiledir}/../../lib")
|
|
63
|
+
set("_hpp_tutorial_PKG_CONFIG_LIBS_LIST" "")
|
|
64
|
+
if(_hpp_tutorial_PKG_CONFIG_LIBS_LIST)
|
|
65
|
+
string(FIND ${_hpp_tutorial_PKG_CONFIG_LIBS_LIST} ", " _is_comma_space)
|
|
66
|
+
while(_is_comma_space GREATER -1)
|
|
67
|
+
string(
|
|
68
|
+
REPLACE ", "
|
|
69
|
+
","
|
|
70
|
+
_hpp_tutorial_PKG_CONFIG_LIBS_LIST
|
|
71
|
+
"${_hpp_tutorial_PKG_CONFIG_LIBS_LIST}"
|
|
72
|
+
)
|
|
73
|
+
string(FIND ${_hpp_tutorial_PKG_CONFIG_LIBS_LIST} ", " _is_comma_space)
|
|
74
|
+
endwhile()
|
|
75
|
+
string(
|
|
76
|
+
REPLACE " "
|
|
77
|
+
";"
|
|
78
|
+
_hpp_tutorial_PKG_CONFIG_LIBS_LIST
|
|
79
|
+
"${_hpp_tutorial_PKG_CONFIG_LIBS_LIST}"
|
|
80
|
+
)
|
|
81
|
+
set(LIBDIR_HINTS ${_hpp_tutorial_PKG_CONFIG_LIBDIR})
|
|
82
|
+
foreach(component ${_hpp_tutorial_PKG_CONFIG_LIBS_LIST})
|
|
83
|
+
string(STRIP ${component} component)
|
|
84
|
+
# If the component is a link directory ("-L/full/path"), append to LIBDIR_HINTS.
|
|
85
|
+
string(FIND ${component} "-L" _is_library_dir)
|
|
86
|
+
if(${_is_library_dir} EQUAL 0)
|
|
87
|
+
string(REGEX REPLACE "^-L" "" lib_path ${component})
|
|
88
|
+
list(APPEND LIBDIR_HINTS "${lib_path}")
|
|
89
|
+
continue()
|
|
90
|
+
endif()
|
|
91
|
+
# If the component is a library name
|
|
92
|
+
string(FIND ${component} "-l" _is_library_name)
|
|
93
|
+
if(${_is_library_name} EQUAL 0)
|
|
94
|
+
string(REGEX REPLACE "^-l" "" lib ${component})
|
|
95
|
+
find_library(abs_lib_${lib} ${lib} HINTS ${LIBDIR_HINTS})
|
|
96
|
+
if(NOT abs_lib_${lib})
|
|
97
|
+
if(_LIBDIR_HINTS)
|
|
98
|
+
message(STATUS "${lib} searched on ${_LIBDIR_HINTS} not FOUND.")
|
|
99
|
+
else()
|
|
100
|
+
message(STATUS "${lib} not FOUND.")
|
|
101
|
+
endif()
|
|
102
|
+
else()
|
|
103
|
+
if(_LIBDIR_HINTS)
|
|
104
|
+
message(
|
|
105
|
+
STATUS
|
|
106
|
+
"${lib} searched on ${_LIBDIR_HINTS} FOUND. ${lib} at ${abs_lib_${lib}}"
|
|
107
|
+
)
|
|
108
|
+
else()
|
|
109
|
+
message(STATUS "${lib} FOUND. ${lib} at ${abs_lib_${lib}}")
|
|
110
|
+
endif()
|
|
111
|
+
list(APPEND _PACKAGE_CONFIG_LIBRARIES "${abs_lib_${lib}}")
|
|
112
|
+
endif()
|
|
113
|
+
unset(abs_lib_${lib} CACHE)
|
|
114
|
+
continue()
|
|
115
|
+
endif()
|
|
116
|
+
# If the component contains a collection of additional arguments
|
|
117
|
+
string(FIND ${component} "," _is_collection)
|
|
118
|
+
if(${_is_collection} GREATER -1)
|
|
119
|
+
string(REPLACE "," ";" component_list "${component}")
|
|
120
|
+
list(GET component_list -1 lib_info)
|
|
121
|
+
set(options ${component})
|
|
122
|
+
list(REMOVE_AT options -1)
|
|
123
|
+
string(FIND ${lib_info} "-l" _is_library_name)
|
|
124
|
+
if(${_is_library_name} GREATER -1)
|
|
125
|
+
string(REGEX REPLACE "^-l" "" lib ${lib_info})
|
|
126
|
+
find_library(abs_lib_${lib} ${lib} HINTS ${LIBDIR_HINTS})
|
|
127
|
+
if(NOT abs_lib_${lib})
|
|
128
|
+
if(_LIBDIR_HINTS)
|
|
129
|
+
message(STATUS "${lib} searched on ${_LIBDIR_HINTS} not FOUND.")
|
|
130
|
+
else()
|
|
131
|
+
message(STATUS "${lib} not FOUND.")
|
|
132
|
+
endif()
|
|
133
|
+
else()
|
|
134
|
+
if(_LIBDIR_HINTS)
|
|
135
|
+
message(
|
|
136
|
+
STATUS
|
|
137
|
+
"${lib} searched on ${_LIBDIR_HINTS} FOUND. ${lib} at ${abs_lib_${lib}}"
|
|
138
|
+
)
|
|
139
|
+
else()
|
|
140
|
+
message(STATUS "${lib} FOUND. ${lib} at ${abs_lib_${lib}}")
|
|
141
|
+
endif()
|
|
142
|
+
list(APPEND _PACKAGE_CONFIG_LIBRARIES "${abs_lib_${lib}}")
|
|
143
|
+
endif()
|
|
144
|
+
unset(abs_lib_${lib} CACHE)
|
|
145
|
+
continue()
|
|
146
|
+
else() # This is an absolute lib
|
|
147
|
+
list(APPEND _PACKAGE_CONFIG_LIBRARIES "${component}")
|
|
148
|
+
endif()
|
|
149
|
+
continue()
|
|
150
|
+
endif()
|
|
151
|
+
# Else, this is just an absolute lib
|
|
152
|
+
if(EXISTS "${component}")
|
|
153
|
+
list(APPEND _PACKAGE_CONFIG_LIBRARIES "${component}")
|
|
154
|
+
endif()
|
|
155
|
+
endforeach()
|
|
156
|
+
endif(_hpp_tutorial_PKG_CONFIG_LIBS_LIST)
|
|
157
|
+
|
|
158
|
+
set("hpp_tutorial_LIBRARIES" ${_PACKAGE_CONFIG_LIBRARIES})
|
|
159
|
+
set("HPP_TUTORIAL_LIBRARIES" ${_PACKAGE_CONFIG_LIBRARIES})
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
include("${CMAKE_CURRENT_LIST_DIR}/cxx-standard.cmake")
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
include(CMakeFindDependencyMacro)
|
|
167
|
+
if(${CMAKE_VERSION} VERSION_LESS "3.15.0")
|
|
168
|
+
find_package(hpp-manipulation REQUIRED)
|
|
169
|
+
find_package(example-robot-data REQUIRED)
|
|
170
|
+
find_package(hpp-gepetto-viewer REQUIRED)
|
|
171
|
+
else()
|
|
172
|
+
find_dependency(hpp-manipulation REQUIRED)
|
|
173
|
+
find_dependency(example-robot-data REQUIRED)
|
|
174
|
+
find_dependency(hpp-gepetto-viewer REQUIRED)
|
|
175
|
+
endif()
|
|
176
|
+
|
|
177
|
+
if(COMMAND ADD_REQUIRED_DEPENDENCY)
|
|
178
|
+
foreach(pkgcfg_dep ${hpp_tutorial_PKG_CONFIG_DEPENDENCIES})
|
|
179
|
+
# Avoid duplicated lookup.
|
|
180
|
+
list(FIND $_PKG_CONFIG_REQUIRES "${pkgcfg_dep}" _index)
|
|
181
|
+
if(${_index} EQUAL -1)
|
|
182
|
+
ADD_REQUIRED_DEPENDENCY(${pkgcfg_dep})
|
|
183
|
+
endif()
|
|
184
|
+
endforeach()
|
|
185
|
+
endif(COMMAND ADD_REQUIRED_DEPENDENCY)
|
|
186
|
+
|
|
187
|
+
include("${CMAKE_CURRENT_LIST_DIR}/hpp_tutorialTargets.cmake")
|
|
188
|
+
|
|
189
|
+
foreach(component ${hpp_tutorial_FIND_COMPONENTS})
|
|
190
|
+
set(comp_file "${CMAKE_CURRENT_LIST_DIR}/${component}Config.cmake")
|
|
191
|
+
if(EXISTS ${comp_file})
|
|
192
|
+
include(${comp_file})
|
|
193
|
+
else()
|
|
194
|
+
set(hpp_tutorial_${component}_FOUND FALSE)
|
|
195
|
+
endif()
|
|
196
|
+
if(hpp_tutorial_${component}_FOUND)
|
|
197
|
+
message(STATUS "hpp_tutorial: ${component} found.")
|
|
198
|
+
else()
|
|
199
|
+
if(hpp_tutorial_FIND_REQUIRED_${component})
|
|
200
|
+
message(FATAL_ERROR "hpp_tutorial: ${component} not found.")
|
|
201
|
+
else()
|
|
202
|
+
message(STATUS "hpp_tutorial: ${component} not found.")
|
|
203
|
+
endif()
|
|
204
|
+
endif()
|
|
205
|
+
endforeach()
|
|
206
|
+
check_required_components("hpp_tutorial")
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
CHECK_MINIMAL_CXX_STANDARD(17 ENFORCE)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# This is a basic version file for the Config-mode of find_package().
|
|
2
|
+
# It is used by write_basic_package_version_file() as input file for configure_file()
|
|
3
|
+
# to create a version-file which can be installed along a config.cmake file.
|
|
4
|
+
#
|
|
5
|
+
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
|
|
6
|
+
# the requested version string are exactly the same and it sets
|
|
7
|
+
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
|
|
8
|
+
# but only if the requested major version is the same as the current one.
|
|
9
|
+
# The variable CVF_VERSION must be set before calling configure_file().
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
set(PACKAGE_VERSION "9.0.0")
|
|
13
|
+
|
|
14
|
+
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
|
15
|
+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
16
|
+
else()
|
|
17
|
+
|
|
18
|
+
if("9.0.0" MATCHES "^([0-9]+)\\.")
|
|
19
|
+
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
|
20
|
+
if(NOT CVF_VERSION_MAJOR VERSION_EQUAL 0)
|
|
21
|
+
string(REGEX REPLACE "^0+" "" CVF_VERSION_MAJOR "${CVF_VERSION_MAJOR}")
|
|
22
|
+
endif()
|
|
23
|
+
else()
|
|
24
|
+
set(CVF_VERSION_MAJOR "9.0.0")
|
|
25
|
+
endif()
|
|
26
|
+
|
|
27
|
+
if(PACKAGE_FIND_VERSION_RANGE)
|
|
28
|
+
# both endpoints of the range must have the expected major version
|
|
29
|
+
math (EXPR CVF_VERSION_MAJOR_NEXT "${CVF_VERSION_MAJOR} + 1")
|
|
30
|
+
if (NOT PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
|
|
31
|
+
OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX_MAJOR STREQUAL CVF_VERSION_MAJOR)
|
|
32
|
+
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND NOT PACKAGE_FIND_VERSION_MAX VERSION_LESS_EQUAL CVF_VERSION_MAJOR_NEXT)))
|
|
33
|
+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
34
|
+
elseif(PACKAGE_FIND_VERSION_MIN_MAJOR STREQUAL CVF_VERSION_MAJOR
|
|
35
|
+
AND ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS_EQUAL PACKAGE_FIND_VERSION_MAX)
|
|
36
|
+
OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MAX)))
|
|
37
|
+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
|
38
|
+
else()
|
|
39
|
+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
40
|
+
endif()
|
|
41
|
+
else()
|
|
42
|
+
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
|
|
43
|
+
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
|
44
|
+
else()
|
|
45
|
+
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
|
46
|
+
endif()
|
|
47
|
+
|
|
48
|
+
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
|
|
49
|
+
set(PACKAGE_VERSION_EXACT TRUE)
|
|
50
|
+
endif()
|
|
51
|
+
endif()
|
|
52
|
+
endif()
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
|
|
56
|
+
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "8" STREQUAL "")
|
|
57
|
+
return()
|
|
58
|
+
endif()
|
|
59
|
+
|
|
60
|
+
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
|
|
61
|
+
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "8")
|
|
62
|
+
math(EXPR installedBits "8 * 8")
|
|
63
|
+
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
|
|
64
|
+
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
|
65
|
+
endif()
|