Table Of Contents

Previous topic

CMake Configuration Options

Next topic

Speect Engine C API

CMake Macros and Functions

Summary

speect_example Add an example that will be compiled as an executable.
speect_file_copy Copy the files in src to dst.
speect_plugin_definition Define a plug-in.
speect_plugin_sources Append the given list of sources to the plug-in source list variable.
speect_plugin_headers Append the given list of headers to the plug-in header list variable.
speect_plugin_include_dirs Append the given list of directories to the plug-in include directories.
speect_plugin_create Create the plug-in shared object.
speect_plugin_configure_info Configure the plug-in information header.
speect_include_plugin Include another plug-in in the build of this one.

API

speect_example

Add an example that will be compiled as an executable. Defined in speect/cmake/spctFunctions.cmake.

Signature :speect_example(name [link_libs = NULL])
Param name:The name of the c file (excluding ”.c”), will also be the name of the executable.
Type name:string
Param link_libs:
 Libraries that the executable must link with (excluding Speect).
Type link_libs:string
speect_file_copy

Copy the files in src to dst. For compatibility with older versions of CMake. Defined in speect/cmake/cmakeCompat.cmake.

Signature :speect_file_copy(src dst)
Param src:A list of files to copy to dst (can be single file), must be absolute paths.
Type src:list or single file
Param dst:A destination path (must be absolute), or a full file name if the file in src must be renamed.
speect_plugin_definition

Define a plug-in. The plug-in name is lowercased and the project name is set to “speect_lowercase_name_plugin” with the C language. The plug-in library’s name will be “lowercase_name.spi” with links to:

  • “lowercase_name.spi.version_major”
  • “lowercase_name.spi.version_major.version_minor.version_patch”

The class name is used in the documentation strings (for example “SArrayFloat plug-in initialization”). The plug-in’s “cmake” directory will be added to CMAKE_MODULE_PATH.

Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_plugin_definition(name classname version_major version_minor version_patch)
Param name:The name of the plug-in.
Type name:string
Param name:The name of the class that the plug-in implements.
Type name:string
Param version_major:
 The major version number of the plug-in.
Type version_major:
 int
Param version_minor:
 The minor version number of the plug-in.
Type version_minor:
 int
Param version_patch:
 The patch number of the plug-in.
Type version_patch:
 int

For example:

speect_plugin_definition(Viterbi "SViterbi" 0 9 5)

will create a plug-in DSO named “viterbi.spi” that points “to viterbi.spi.0” which in turn points to “viterbi.spi.0.9.5”

speect_plugin_sources

Appends the given list of sources to the plug-in source list variable, lowercase_name_SRC_FILES. Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_plugin_sources(source_list)
Param source_list:
 A list of source files to append to lowercase_name_SRC_FILES.
Type source_list:
 CMake list
speect_plugin_headers

Appends the given list of headers to the plug-in header list variable, lowercase_name_INCLUDE_FILES These headers will be installed to CMAKE_INSTALL_PREFIX/include/speect/plugins/<plugin_dir>. Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_plugin_headers(headers_list)
Param headers_list:
 A list of header files to append to lowercase_name_INCLUDE_FILES
Type headers_list:
 CMake list
speect_plugin_include_dirs

Appends the given list of directories to the plug-in include directories variable, lowercase_name_INCLUDE_DIRS. Used to add extra external includes that are required by a plug-in. Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_plugin_include_dirs(directories)
Param directories:
 A list of directories to append to lowercase_name_INCLUDE_DIRS
Type headers_list:
 CMake list
speect_plugin_create

Create the plug-in shared object. The shared object will be linked against the Speect Engine library. Build options will be as set at top level Speect CMakeLists.txt The Speect Engine directories will be included, as well as all headers in the plug-in’s source (src) directory. Optional parameters, which are libraries to link with, can be given in a list form. Installation paths for UNIX system types will be set and the binary path output will be CMAKE_BINARY_DIR/plugins/lib.

A plug-in CMake configuration file will also be created. This configuration file can be included in other plug-in CMakeLists.txt to include their header files. Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_plugin_create([link_lib_list = NULL])
Param link_lib_list:
 Extra libraries that the plug-in must be linked with.
Type link_lib_list:
 CMake list
speect_plugin_configure_info

Configure the plug-in information header, plugin_info.h, with the provided information. Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_plugin_configure_info(description major_min minor_min)
Param description:
 A short description of the plug-in.
Type description:
 string
Param major_min:
 The minimum major version of the Speect Engine with which this plug-in will work.
Type major_min:int
Param minor_min:
 The minimum minor version of the Speect Engine with which this plug-in will work.
Type minor_min:int
speect_include_plugin

Include another plug-in in the build of this one. This macro will load the plug-in’s CMake configuration, which contains the header files to include, as well as version info. A fatal error will be thrown if the given major and minor version numbers are greater than the requested plug-in’s versions. Defined in speect/plugins/cmake/pluginFunctions.cmake.

Signature :speect_include_plugin(name major_min minor_min)
Param name:The name of the requested plug-in to include.
Type description:
 string
Param major_min:
 The minimum major version of the requested plug-in with which this plug-in will work.
Type major_min:int
Param minor_min:
 The minimum minor version of the requested plug-in with which this plug-in will work.
Type minor_min:int