summaryrefslogtreecommitdiffstats
path: root/Modules/FindProducer.cmake
blob: 7fbd8373447a287aca74b933659a6ce0f0f9d910 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
# file LICENSE.rst or https://cmake.org/licensing for details.

#[=======================================================================[.rst:
FindProducer
------------

.. note::

  Producer (also known as *Open Producer*) library originated from the
  osgProducer utility library in early versions of the OpenSceneGraph toolkit
  and was later developed into a standalone library.  The osgProducer was
  eventually replaced by the osgViewer library, and the standalone Producer
  library became obsolete and is no longer maintained.  For details about
  OpenSceneGraph usage, refer to the :module:`FindOpenSceneGraph` module.

Finds the Producer library, a windowing and event handling library designed
primarily for real-time graphics applications:

.. code-block:: cmake

  find_package(Producer [...])

Producer library headers are intended to be included in C++ project source code
as:

.. code-block:: c++
  :caption: ``example.cxx``

  #include <Producer/CameraGroup>

Result Variables
^^^^^^^^^^^^^^^^

This module defines the following variables:

``Producer_FOUND``
  .. versionadded:: 3.3

  Boolean indicating whether Producer was found.

Cache Variables
^^^^^^^^^^^^^^^

The following cache variables may also be set:

``PRODUCER_INCLUDE_DIR``
  The include directory containing headers needed to use Producer.

``PRODUCER_LIBRARY``
  The path to the Producer library needed to link against for usage.

Hints
^^^^^

This module accepts the following variables:

``PRODUCER_DIR``
  Environment variable that can be set to help locate a custom installation of
  the Producer library.  It should point to the root directory where the
  Producer library was installed.  This should match the installation prefix
  used when configuring and building Producer, such as with
  ``./configure --prefix=$PRODUCER_DIR``.

Because Producer was historically tightly integrated with OpenSceneGraph, this
module also accepts the following environment variables as equivalents to
``PRODUCER_DIR`` for convenience to specify common installation root for
multiple OpenSceneGraph-related libraries at once:

``OSGDIR``
  Environment variable treated the same as ``PRODUCER_DIR``.

``OSG_DIR``
  Environment variable treated the same as ``PRODUCER_DIR``.

Deprecated Variables
^^^^^^^^^^^^^^^^^^^^

The following variables are provided for backward compatibility:

``PRODUCER_FOUND``
  .. deprecated:: 4.2
    Use ``Producer_FOUND``, which has the same value.

  Boolean indicating whether Producer was found.

Examples
^^^^^^^^

Finding the Producer library and creating an :ref:`imported target
<Imported Targets>` that encapsulates its usage requirements for linking to a
project target:

.. code-block:: cmake

  find_package(Producer)

  if(Producer_FOUND AND NOT TARGET Producer::Producer)
    add_library(Producer::Producer INTERFACE IMPORTED)
    set_target_properties(
      Producer::Producer
      PROPERTIES
        INTERFACE_INCLUDE_DIRECTORIES "${PRODUCER_INCLUDE_DIR}"
        INTERFACE_LINK_LIBRARIES "${PRODUCER_LIBRARY}"
    )
  endif()

  target_link_libraries(example PRIVATE Producer::Producer)
#]=======================================================================]

# Try the user's environment request before anything else.
find_path(PRODUCER_INCLUDE_DIR Producer/CameraGroup
  HINTS
    ENV PRODUCER_DIR
    ENV OSG_DIR
    ENV OSGDIR
  PATH_SUFFIXES include
  PATHS
    ~/Library/Frameworks
    /Library/Frameworks
    /opt
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OpenThreads_ROOT]
    [HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session\ Manager\\Environment;OSG_ROOT]
)

find_library(PRODUCER_LIBRARY
  NAMES Producer
  HINTS
    ENV PRODUCER_DIR
    ENV OSG_DIR
    ENV OSGDIR
  PATH_SUFFIXES lib
  PATHS
  /opt
)

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Producer DEFAULT_MSG
    PRODUCER_LIBRARY PRODUCER_INCLUDE_DIR)