Compiling Player 3 clients and plugins

From The Player Project

Jump to: navigation, search
 
Line 2: Line 2:
The modules are installed in ${prefix}/share/cmake/Modules/. They are UsePlayerC.cmake, UsePlayerC++.cmake and UsePlayerPlugin.cmake. The Player examples installed in ${prefix}/share/player/examples/ all include CMakeLists.txt files that use these modules to compile the examples. See the README file in each directory for how to do so.
The modules are installed in ${prefix}/share/cmake/Modules/. They are UsePlayerC.cmake, UsePlayerC++.cmake and UsePlayerPlugin.cmake. The Player examples installed in ${prefix}/share/player/examples/ all include CMakeLists.txt files that use these modules to compile the examples. See the README file in each directory for how to do so.
 +
 +
''For a tutorial on how to integrate these functions into your project, please see [[Player and CMake]]''
= Compiling C clients =
= Compiling C clients =
The UsePlayerC.cmake module enables compiling of C clients using the libplayerc client library. A minimal example is shown below.
The UsePlayerC.cmake module enables compiling of C clients using the libplayerc client library. A minimal example is shown below.
-
 
+
<source lang="cmake">
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  INCLUDE (UsePlayerC)
  INCLUDE (UsePlayerC)
  PLAYER_ADD_PLAYERC_CLIENT (simple SOURCES simple.c)
  PLAYER_ADD_PLAYERC_CLIENT (simple SOURCES simple.c)
-
 
+
</source>
This is all that is necessary for a simple client. If your client requires extra options, such as include search paths, libraries to link to, and so on, specify these to PLAYER_ADD_PLAYERC_CLIENT() as well. Use the standard CMake commands to perform such functions as searching for libraries, using pkg-config, etc.
This is all that is necessary for a simple client. If your client requires extra options, such as include search paths, libraries to link to, and so on, specify these to PLAYER_ADD_PLAYERC_CLIENT() as well. Use the standard CMake commands to perform such functions as searching for libraries, using pkg-config, etc.
Line 16: Line 18:
The UsePlayerC++.cmake module enables compiling of C++ clients using the libplayerc++ client library. A minimal example is shown below.
The UsePlayerC++.cmake module enables compiling of C++ clients using the libplayerc++ client library. A minimal example is shown below.
-
 
+
<source lang="cmake">
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  INCLUDE (UsePlayerC++)
  INCLUDE (UsePlayerC++)
  PLAYER_ADD_PLAYERCPP_CLIENT (camera SOURCES camera.cc)
  PLAYER_ADD_PLAYERCPP_CLIENT (camera SOURCES camera.cc)
 +
</source>
As with C clients, if your client requires extra options, specify these to PLAYER_ADD_PLAYERCPP_CLIENT(), and use the standard CMake commands for other build script functionality.
As with C clients, if your client requires extra options, specify these to PLAYER_ADD_PLAYERCPP_CLIENT(), and use the standard CMake commands for other build script functionality.
Line 27: Line 30:
The UsePlayerPlugin.cmake module provides functionality for compiling plugin drivers. A minimal example is shown below.
The UsePlayerPlugin.cmake module provides functionality for compiling plugin drivers. A minimal example is shown below.
 +
<source lang="cmake">
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  INCLUDE (UsePlayerPlugin)
  INCLUDE (UsePlayerPlugin)
  PLAYER_ADD_PLUGIN_DRIVER (exampledriver SOURCES exampledriver.cc)
  PLAYER_ADD_PLUGIN_DRIVER (exampledriver SOURCES exampledriver.cc)
 +
</source>
The macro works in the same way as the client macros.
The macro works in the same way as the client macros.
Line 36: Line 41:
The UsePlayerPlugin.cmake module allows compiling plugin interfaces. A minimal example is shown below.
The UsePlayerPlugin.cmake module allows compiling plugin interfaces. A minimal example is shown below.
-
 
+
<source lang="cmake">
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  SET (CMAKE_MODULE_PATH /home/geoff/share/cmake/Modules)
  INCLUDE (UsePlayerPlugin)
  INCLUDE (UsePlayerPlugin)
Line 47: Line 52:
  PLAYER_ADD_PLAYERC_CLIENT (example_client SOURCES example_client.c example_interface.h)
  PLAYER_ADD_PLAYERC_CLIENT (example_client SOURCES example_client.c example_interface.h)
  TARGET_LINK_LIBRARIES (example_client example)
  TARGET_LINK_LIBRARIES (example_client example)
-
 
+
</source>
This CMakeLists.txt is also compiling a C client and a plugin driver that uses the plugin interface, hence the length. It adds the ${PROJECT_BINARY_DIR} (i.e. where generated and compiled files are placed by CMake) to the include path, because the interface plugin creation involves generating some header files. The plugin interface is created first, followed by creating the driver and the client using the files generated during the interface plugin creation. The client must also be linked to the interface plugin library so that it can find the interface's XDR functions at runtime.
This CMakeLists.txt is also compiling a C client and a plugin driver that uses the plugin interface, hence the length. It adds the ${PROJECT_BINARY_DIR} (i.e. where generated and compiled files are placed by CMake) to the include path, because the interface plugin creation involves generating some header files. The plugin interface is created first, followed by creating the driver and the client using the files generated during the interface plugin creation. The client must also be linked to the interface plugin library so that it can find the interface's XDR functions at runtime.
Line 59: Line 64:
Macro to build a simple client. Pass source files, flags, etc. as extra args preceded by keywords as follows:
Macro to build a simple client. Pass source files, flags, etc. as extra args preceded by keywords as follows:
-
  SOURCES <source file list>
+
  SOURCES &lt;source file list>
  INCLUDEDIRS <include directories list>
  INCLUDEDIRS <include directories list>
  LIBDIRS <library directories list>
  LIBDIRS <library directories list>
Line 79: Line 84:
Macro to build a simple client. Pass source files, flags, etc. as extra args preceded by keywords as follows:
Macro to build a simple client. Pass source files, flags, etc. as extra args preceded by keywords as follows:
-
  SOURCES <source file list>
+
  SOURCES &lt;source file list>
  INCLUDEDIRS <include directories list>
  INCLUDEDIRS <include directories list>
  LIBDIRS <library directories list>
  LIBDIRS <library directories list>
Line 99: Line 104:
Macro to build a plugin driver. Pass source files, flags, etc. as extra args preceded by keywords as follows:
Macro to build a plugin driver. Pass source files, flags, etc. as extra args preceded by keywords as follows:
-
  SOURCES <source file list>
+
  SOURCES &lt;source file list>
  INCLUDEDIRS <include directories list>
  INCLUDEDIRS <include directories list>
  LIBDIRS <library directories list>
  LIBDIRS <library directories list>
Line 119: Line 124:
Macro to build a plugin interface. This macro will create generated sources prefixed with the interface name. These files will be named <interface>_interface.h and <interface>_xdr.h. Pass source files, flags, etc. as extra args preceded by keywords as follows:
Macro to build a plugin interface. This macro will create generated sources prefixed with the interface name. These files will be named <interface>_interface.h and <interface>_xdr.h. Pass source files, flags, etc. as extra args preceded by keywords as follows:
-
  SOURCES <source file list>
+
  SOURCES &lt;source file list>
  INCLUDEDIRS <include directories list>
  INCLUDEDIRS <include directories list>
  LIBDIRS <library directories list>
  LIBDIRS <library directories list>
Line 133: Line 138:
;variable args
;variable args
:Information for compiling the driver, such as source files and compile flags.
:Information for compiling the driver, such as source files and compile flags.
 +
 +
[[Category:Documentation]]
 +
[[Category:Tutorials]]
 +
[http://custom-essay.ws/index.php essay papers]

Latest revision as of 13:37, 15 August 2011

Personal tools