Extracted CMake API reference¶
This page was auto-generated from cmake source files using generate_cmake_rst.py
- Public CMake functions / macros
- add_python_executable
- catkin_add_env_hooks
- catkin_add_executable_with_gmock
- catkin_add_executable_with_gtest
- catkin_add_gmock
- catkin_add_gtest
- catkin_add_nosetests
- catkin_download
- catkin_download_test_data
- catkin_filter_libraries_for_build_configuration
- catkin_install_python
- catkin_metapackage
- catkin_pack_libraries_with_build_configuration
- catkin_package
- catkin_package_xml
- catkin_python_setup
- catkin_replace_imported_library_targets
- catkin_unpack_libraries_with_build_configuration
- Non-public CMake functions / macros
- _catkin_add_executable_with_google_test
- _catkin_add_google_test
- _generate_function_if_testing_is_disabled
- _set_cmake_policy_to_new_if_available
- _warn_if_skip_testing
- catkin_destinations
- catkin_install_logic
- catkin_run_tests_target
- catkin_symlink_install_append_install_code
- catkin_symlink_install_directory
- catkin_symlink_install_files
- catkin_symlink_install_programs
- catkin_symlink_install_targets
- catkin_workspace
- list_append_deduplicate
- list_append_unique
- stamp
- string_starts_with
- Not documented CMake functions / macros
- _catkin_package
- _catkin_package_xml
- _strip_path_prefix
- _use_custom_install
- assert
- assert_file_exists
- assert_unset
- atomic_configure_file
- catkin_doxygen
- catkin_generate_environment
- catkin_stack
- configure_shared_library_build_settings
- debug_message
- em_expand
- find_program_required
- find_python_module
- list_insert_in_workspace_order
- safe_execute_process
- shell
Public CMake functions / macros¶
add_python_executable()
catkin_add_env_hooks()
catkin_add_executable_with_gmock()
catkin_add_executable_with_gtest()
catkin_add_gmock()
catkin_add_gtest()
catkin_add_nosetests()
catkin_download()
catkin_download_test_data()
catkin_filter_libraries_for_build_configuration()
catkin_install_python()
catkin_metapackage()
catkin_pack_libraries_with_build_configuration()
catkin_package()
catkin_package_xml()
catkin_python_setup()
catkin_replace_imported_library_targets()
catkin_unpack_libraries_with_build_configuration()
add_python_executable¶
-
add_python_executable
()¶ [function defined in platform/windows.cmake]
Add Python executable wrapper around Python scripts on Windows.
Python scripts with (or without) .py extension are not executable on Windows due to lack of shebang support.
Parameters: - SCRIPT_NAME (string) – Python script name that needs a wrapper
- TARGET_NAME (string) – build target name
- DESTINATION (string) – install destination for the build target
catkin_add_env_hooks¶
-
catkin_add_env_hooks
(file_prefix)¶ [function defined in catkin_add_env_hooks.cmake]
Register environment hooks which are executed by the setup script.
For each shell in
SHELLS
, the macro searches for one of the following files in the directoryDIRECTORY
:<file_prefix>.<shell>
,<file_prefix>.<shell>.<develspace|installspace>.em
,<file_prefix>.<shell>.em
,<file_prefix>.<shell>.<develspace|installspace>.in
or<file_prefix>.<shell>.in
.Plain shells, will be copied to, templates are expanded to
etc/catkin/profile.d/
, where it will be read by global generatedsetup.<shell>
.The templates can also distinguish between devel- and installspace using the boolean variables
DEVELSPACE
andINSTALLSPACE
which are eithertrue
orfalse
. E.g. @[if DEVELSPACE]@ ... @[end if]@ for .emNote
Note that the extra extensions must appear in the filename but must not appear in the argument.
Note
These files will share a single directory with other packages that choose to install env hooks. Be careful to give the file a unique name. Typically
NN.name.<shell>
is used, where NN can define when something should be run (the files are read in alphanumeric order) and the name serves to disambiguate in the event of collisions.Example:
catkin_add_env_hooks(my_prefix SHELLS bash tcsh zsh DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/env-hooks)
looks for files env-hooks/my_prefix.[bash|tcsh|zsh]((.(devel|install)space)?.[em|in])?
- The environment hooks are installed into two destinations:
etc/catkin/profile.d
where they can be sourced efficiently by the catkin generatedsetup.<shell>
scriptsshare/${PROJECT_NAME}/catkin_env_hook
where they can be sourced efficiently on a per-package base
Parameters: - file_prefix (string) – the filename prefix
- SHELLS (list of strings) – the shell extensions (e.g.: sh bat bash zsh tcsh)
- DIRECTORY (string) – the directory (default: ${CMAKE_CURRENT_SOURCE_DIR})
- SKIP_INSTALL (option) – if specified the env hooks are only generated in the devel space but not installed
catkin_add_executable_with_gmock¶
-
catkin_add_executable_with_gmock
(target)¶ [function defined in test/gtest.cmake]
Add a GMock executable target.
An executable target is created with the source files, it is linked against GTest and GMock. If you also want to register the executable as a test use
catkin_add_gtest()
instead.Parameters: - target (string) – the target name
- source_files (list of strings) – a list of source files used to build the test executable
Additionally, the option EXCLUDE_FROM_ALL can be specified.
catkin_add_executable_with_gtest¶
-
catkin_add_executable_with_gtest
(target)¶ [function defined in test/gtest.cmake]
Add a GTest executable target.
An executable target is created with the source files, it is linked against GTest. If you also want to register the executable as a test use
catkin_add_gtest()
instead.Parameters: - target (string) – the target name
- source_files (list of strings) – a list of source files used to build the test executable
Additionally, the option EXCLUDE_FROM_ALL can be specified.
catkin_add_gmock¶
-
catkin_add_gmock
(target)¶ [function defined in test/gtest.cmake]
Add a GMock based test target.
An executable target is created with the source files, it is linked against GTest and GMock and added to the set of unit tests.
Note
The test can be executed by calling the binary directly or using:
make run_tests_${PROJECT_NAME}_gtest_${target}
Parameters: - target (string) – the target name
- source_files (list of strings) – a list of source files used to build the test executable
- TIMEOUT (integer) – currently not supported
- WORKING_DIRECTORY (string) – the working directory when executing the executable
catkin_add_gtest¶
-
catkin_add_gtest
(target)¶ [function defined in test/gtest.cmake]
Add a GTest based test target.
An executable target is created with the source files, it is linked against GTest and added to the set of unit tests.
Note
The test can be executed by calling the binary directly or using:
make run_tests_${PROJECT_NAME}_gtest_${target}
Parameters: - target (string) – the target name
- source_files (list of strings) – a list of source files used to build the test executable
- TIMEOUT (integer) – currently not supported
- WORKING_DIRECTORY (string) – the working directory when executing the executable
catkin_add_nosetests¶
-
catkin_add_nosetests
(path)¶ [function defined in test/nosetests.cmake]
Add Python nose tests.
Nose collects tests from the directory
dir
automatically.Note
The test can be executed by calling
nosetests
directly or using: `` make run_tests_${PROJECT_NAME}_nosetests_${dir}`` (where slashes in thedir
are replaced with periods)Parameters: - path (string) – a relative or absolute directory to search for nosetests in or a relative or absolute file containing tests
- DEPENDENCIES (list of strings) – the targets which must be built before executing the test
- TIMEOUT (integer) – the timeout for individual tests in seconds (default: 60)
- WORKING_DIRECTORY (string) – the working directory when executing the
tests (this option can only be used when the
path
argument is a file but not when it is a directory)
catkin_download¶
-
catkin_download
(target, url)¶ [function defined in catkin_download.cmake]
Download a file containing data from a URL.
It is commonly used to download larger data files which should not be stored in the repository.
Note
It is not recommended to rely on downloaded data during a configure / make cycle since this prevents building the package when no network connectivity is available.
Note
The target will be registered as a dependency of the “download_extra_data” target.
Parameters: - target (string) – the target name
- url (string) – the url to download
- DESTINATION (string) – the directory where the file is downloaded to (default: ${PROJECT_BINARY_DIR})
- FILENAME (string) – the filename of the downloaded file (default: the basename of the url)
- MD5 (string) – the expected md5 hash to compare against (default: empty, skipping the check)
Additionally, options EXCLUDE_FROM_ALL and REQUIRED can be specified.
catkin_download_test_data¶
-
catkin_download_test_data
(target, url)¶ [function defined in test/catkin_download_test_data.cmake]
Parameters: - DESTINATION (string) – the directory where the file is downloaded to (default: ${PROJECT_BINARY_DIR})
- FILENAME (string) – the filename of the downloaded file (default: the basename of the url)
- MD5 (string) – the expected md5 hash to compare against (default: empty, skipping the check)
Additionally, option REQUIRED can be specified.
catkin_filter_libraries_for_build_configuration¶
-
catkin_filter_libraries_for_build_configuration
(VAR)¶ [function defined in catkin_libraries.cmake]
Filter libraries based on optional build configuration keywords.
Parameters: - VAR (string) – the output variable name
- ARGN (list of strings) – a list of libraries
- BUILD_TYPE (list of strings) – a keyword for the build type (default:
CMAKE_BUILD_TYPE
)
catkin_install_python¶
-
catkin_install_python
(signature)¶ [function defined in catkin_install_python.cmake]
Install Python files and update their shebang lines to use a different Python executable.
The signature:
catkin_install_python(PROGRAMS files... DESTINATION <dir> [OPTIONAL])See the documentation for CMake install() function for more information.
catkin_metapackage¶
-
catkin_metapackage
()¶ [function defined in catkin_metapackage.cmake]
It installs the package.xml file of a metapackage.
Note
It must be called once for each metapackage. Best practice is to call this macro early in your root CMakeLists.txt, immediately after calling
project()
andfind_package(catkin REQUIRED)
.Parameters: DIRECTORY (string) – the path to the package.xml file if not in the same location as the CMakeLists.txt file
catkin_pack_libraries_with_build_configuration¶
-
catkin_pack_libraries_with_build_configuration
(VAR)¶ [function defined in catkin_libraries.cmake]
Pack a list of libraries with optional build configuration keywords. Each keyword is joined with its library using a separator. A packed library list can be deduplicated correctly.
Parameters: - VAR (string) – the output variable name
- ARGN (list of strings) – a list of libraries
catkin_package¶
-
catkin_package
()¶ [macro defined in catkin_package.cmake]
It installs the package.xml file, and it generates code for
find_package
andpkg-config
so that other packages can get information about this package. For this purpose the information about include directories, libraries, further dependencies and CMake variables are used.Note
It must be called once for each package. It is indirectly calling``catkin_destinations()`` which will provide additional output variables. Please make sure to call
catkin_package()
before using those variables.Parameters: - INCLUDE_DIRS (list of strings) –
CMAKE_CURRENT_SOURCE_DIR
-relative paths to C/C++ includes - LIBRARIES (list of strings) – names of library targets that will appear in the
catkin_LIBRARIES
and${PROJECT_NAME}_LIBRARIES
of other projects that search for you viafind_package
. Currently this will break if the logical target names are not the same as the installed names. - CATKIN_DEPENDS (list of strings) – a list of catkin projects which this project
depends on. It is used when client code finds this project via
find_package()
orpkg-config
. Each project listed will in turn befind_package
-ed or is states asRequires
in the .pc file. Therefore theirINCLUDE_DIRS
andLIBRARIES
will be appended to ours. Only catkin projects should be used where it be guarantee that they are find_packagable and have pkg-config files. - DEPENDS (list of strings) – a list of CMake projects which this project depends
on. Since they might not be find_packagable or lack a pkg-config
file their
INCLUDE_DIRS
andLIBRARIES
are passed directly. This requires that it has beenfind_package
-ed before and all variables (<name>_FOUND
,<name>_INCLUDE_DIRS
, etc.) have the same case as this argument. - CFG_EXTRAS (string) – a CMake file containing extra stuff that should
be accessible to users of this package after
find_package
-ing it. This file must live in the subdirectorycmake
or be an absolute path. All passed extra files must have unique basenames since they are being installed into a single folder. Various additional file extension are possible: for a plain cmake file just.cmake
, for files expanded using CMake’sconfigure_file()
use.cmake.in
or for files expanded by empy use.cmake.em
. The templates can distinguish between devel- and installspace using the boolean variablesDEVELSPACE
andINSTALLSPACE
. For templated files it is also possible to use the extensions.cmake.develspace.(in|em)
or.cmake.installspace.(em|in)
to generate the files only for a specific case. If the global variable ${PROJECT_NAME}_CFG_EXTRAS is set it will be prepended to the explicitly passed argument. - EXPORTED_TARGETS (list of strings) – a list of target names which usually generate code. Downstream packages can depend on these targets to ensure that code is generated before it is being used. The generated CMake config file will ensure that the targets exists. If the global variable ${PROJECT_NAME}_EXPORTED_TARGETS is set it will be prepended to the explicitly passed argument.
- SKIP_CMAKE_CONFIG_GENERATION (bool) – the option to skip the generation of the CMake config files for the package
- SKIP_PKG_CONFIG_GENERATION (bool) – the option to skip the generation of the pkg-config file for the package
Example:
catkin_package( INCLUDE_DIRS include LIBRARIES projlib1 projlib2 CATKIN_DEPENDS roscpp DEPENDS Eigen CFG_EXTRAS proj-extras[.cmake|.cmake.in|.cmake(.develspace|.installspace)?.em] )
- INCLUDE_DIRS (list of strings) –
catkin_package_xml¶
-
catkin_package_xml
()¶ [macro defined in catkin_package_xml.cmake]
Parse package.xml from
CMAKE_CURRENT_SOURCE_DIR
and make several information available to CMake.Note
It is called automatically by
catkin_package()
if not called manually before. It must be called once in each package, after callingproject()
where the project name must match the package name. The macro should only be called manually if the variables are use to parameterizecatkin_package()
.Parameters: DIRECTORY (string) – the directory of the package.xml (default
${CMAKE_CURRENT_SOURCE_DIR}
).Output Variables: - <packagename>_VERSION – the version number
- <packagename>_MAINTAINER – the name and email of the maintainer(s)
- <packagename>_PACKAGE_FORMAT – the format version of the manifest
- <packagename>_<dep_type>_DEPENDS – the dependencies of a specific type, the following types are available: BUILD, BUILD_EXPORT, BUILDTOOL, BUILDTOOL_EXPORT, EXEC, RUN, TEST, DOC
- <packagename>_<dep_type>_DEPENDS_<dep_name>_VERSION_<ver_type> – for each dependency which has a version range specified the version number is provided, the following version types are available: LT, LTE, EQ, GTE, GT
- <packagename>_URL_WEBSITE – the url(s) of type website
- <packagename>_URL_BUGTRACKER – the url(s) of type bugtracker
- <packagename>_URL_REPOSITORY – the url(s) of type repository
- <packagename>_DEPRECATED – TRUE if the package is deprecated
- _CATKIN_CURRENT_PACKAGE – the name of the package from the manifest
Note
It is calling
catkin_destinations()
which will provide additional output variables.
catkin_python_setup¶
-
catkin_python_setup
()¶ [function defined in catkin_python_setup.cmake]
This macro will interrogate the Python setup.py file in
${${PROJECT_NAME}_SOURCE_DIR}
, and then creates forwarding Python pkgutil infrastructure in devel space accordingly for the scripts and packages declared in setup.py.Doing so enables mixing generated code in devel space with static code from sourcespace within a single Python package.
In addition, it adds the install command of distutils/setuputils to the install target.
Note
If the project also uses genmsg message generation via
generate_messages()
this function must be called before.
catkin_replace_imported_library_targets¶
-
catkin_replace_imported_library_targets
(VAR)¶ [function defined in catkin_libraries.cmake]
Replace imported library target names with the library name.
Parameters: - VAR (string) – the output variable name
- ARGN (list of strings) – a list of libraries
catkin_unpack_libraries_with_build_configuration¶
-
catkin_unpack_libraries_with_build_configuration
(VAR)¶ [function defined in catkin_libraries.cmake]
Unpack a list of libraries with optional build configuration keyword prefixes. Libraries prefixed with a keyword are split into the keyword and the library.
Parameters: - VAR (string) – the output variable name
- ARGN (list of strings) – a list of libraries
Non-public CMake functions / macros¶
_catkin_add_executable_with_google_test()
_catkin_add_google_test()
_generate_function_if_testing_is_disabled()
_set_cmake_policy_to_new_if_available()
_warn_if_skip_testing()
catkin_destinations()
catkin_install_logic()
catkin_run_tests_target()
catkin_symlink_install_append_install_code()
catkin_symlink_install_directory()
catkin_symlink_install_files()
catkin_symlink_install_programs()
catkin_symlink_install_targets()
catkin_workspace()
list_append_deduplicate()
list_append_unique()
stamp()
string_starts_with()
_catkin_add_executable_with_google_test¶
-
_catkin_add_executable_with_google_test
(type, target)¶ [function defined in test/gtest.cmake]
This is an internal function, use catkin_add_executable_with_gtest or catkin_add_executable_with_gmock instead.
Parameters: type – “gtest” or “gmock” The remaining arguments are the same as for catkin_add_executable_with_gtest and catkin_add_executable_with_gmock.
_catkin_add_google_test¶
-
_catkin_add_google_test
(type, target)¶ [function defined in test/gtest.cmake]
This is an internal function, use catkin_add_gtest or catkin_add_gmock instead.
Parameters: type – “gtest” or “gmock” The remaining arguments are the same as for catkin_add_gtest and catkin_add_gmock.
_generate_function_if_testing_is_disabled¶
-
_generate_function_if_testing_is_disabled
()¶ [macro defined in test/tests.cmake]
creates dummy functions in case testing has been explicitly disabled (and not only skipping) which outputs an error message when being invoked
_set_cmake_policy_to_new_if_available¶
-
_set_cmake_policy_to_new_if_available
(policy)¶ [macro defined in all.cmake]
enable all new policies (if available)
_warn_if_skip_testing¶
-
_warn_if_skip_testing
(funcname)¶ [macro defined in test/tests.cmake]
checks if a function has been called while testing is skipped and outputs a warning message
catkin_destinations¶
-
catkin_destinations
()¶ [macro defined in catkin_destinations.cmake]
Set several path suffixes for install destinations.
catkin_install_logic¶
-
catkin_install_logic
(signature)¶ [function defined in symlink_install/catkin_install_logic.cmake]
Custom CMake install logic to use symlinks instead of copying resources.
Parameters: ARGN (various) – the same arguments as the CMake install command.
catkin_run_tests_target¶
-
catkin_run_tests_target
(type, name, xunit_filename)¶ [function defined in test/tests.cmake]
Create a test target, integrate it with the run_tests infrastructure and post-process the junit result.
All test results go under ${CATKIN_TEST_RESULTS_DIR}/${PROJECT_NAME}
This function is only used internally by the various catkin_add_*test() functions.
catkin_symlink_install_append_install_code¶
-
catkin_symlink_install_append_install_code
()¶ [function defined in symlink_install/catkin_symlink_install_append_install_code.cmake]
Register a CMake script for execution at install time.
Parameters: - ARGN (list of strings) – the list of CMake code lines
- COMMENTS (list of strings) – an optional list of comments
catkin_symlink_install_directory¶
-
catkin_symlink_install_directory
(directory_keyword)¶ [function defined in symlink_install/catkin_symlink_install_directory.cmake]
Reimplement CMake install(DIRECTORY) command to use symlinks instead of copying resources.
Parameters: ARGN (various) – the same arguments as the CMake install command.
catkin_symlink_install_files¶
-
catkin_symlink_install_files
(files_keyword)¶ [function defined in symlink_install/catkin_symlink_install_files.cmake]
Reimplement CMake install(FILES) command to use symlinks instead of copying resources.
Parameters: ARGN (various) – the same arguments as the CMake install command.
catkin_symlink_install_programs¶
-
catkin_symlink_install_programs
(programs_keyword)¶ [function defined in symlink_install/catkin_symlink_install_programs.cmake]
Reimplement CMake install(PROGRAMS) command to use symlinks instead of copying resources.
Parameters: ARGN (various) – the same arguments as the CMake install command.
catkin_symlink_install_targets¶
-
catkin_symlink_install_targets
()¶ [function defined in symlink_install/catkin_symlink_install_targets.cmake]
Reimplement CMake install(TARGETS) command to use symlinks instead of copying resources.
Parameters: ARGN (various) – the same arguments as the CMake install command.
catkin_workspace¶
-
catkin_workspace
()¶ [function defined in catkin_workspace.cmake]
Search all subfolders in the workspace for
package.xml
files. Based on the dependencies specified in thebuild_depends
,buildtool_depends
and (as of package format version 2)test_depends
tags it performs a topological sort and callsadd_subdirectory()
for each directory.The functions is only called in catkin’s
toplevel.cmake
, which is usually symlinked to the workspace root directory (which contains multiple packages).
list_append_deduplicate¶
-
list_append_deduplicate
(listname)¶ [macro defined in list_append_deduplicate.cmake]
Append elements to a list and remove existing duplicates from the list.
Note
Using CMake’s
list(APPEND ..)
andlist(REMOVE_DUPLICATES ..)
is not sufficient since its implementation uses a set internally which makes the operation unstable.
list_append_unique¶
-
list_append_unique
(listname)¶ [macro defined in list_append_unique.cmake]
Append elements to a list if they are not already in the list.
Note
Using CMake’s
list(APPEND ..)
andlist(REMOVE_DUPLICATES ..)
is not sufficient since its implementation uses a set internally which makes the operation unstable.
stamp¶
-
stamp
(path) [function defined in stamp.cmake]
param path: file name Uses
configure_file
to generate a filefilepath.stamp
hidden somewhere in the build tree. This will cause cmake to rebuild its cache whenfilepath
is modified.
string_starts_with¶
-
string_starts_with
(str, prefix, var)¶ [function defined in string_starts_with.cmake]
Check if a string starts with a prefix.
Parameters: - str (string) – the string
- prefix (string) – the prefix
- var (bool) – the output variable name
Not documented CMake functions / macros¶
_catkin_package¶
-
_catkin_package
()¶ [function defined in catkin_package.cmake]
_catkin_package_xml¶
-
_catkin_package_xml
(dest_dir)¶ [macro defined in catkin_package_xml.cmake]
_strip_path_prefix¶
-
_strip_path_prefix
(var, value, prefix)¶ [function defined in test/nosetests.cmake]
_use_custom_install¶
-
_use_custom_install
()¶ [function defined in custom_install.cmake]
assert_file_exists¶
-
assert_file_exists
(FILENAME, MESSAGE)¶ [function defined in assert.cmake]
assert_unset¶
-
assert_unset
(VAR)¶ [function defined in assert.cmake]
atomic_configure_file¶
-
atomic_configure_file
(input, output)¶ [function defined in atomic_configure_file.cmake]
catkin_doxygen¶
-
catkin_doxygen
(TARGET_NAME, SEARCH_DIRS)¶ [function defined in tools/doxygen.cmake]
catkin_generate_environment¶
-
catkin_generate_environment
()¶ [function defined in catkin_generate_environment.cmake]
catkin_stack¶
-
catkin_stack
()¶ [function defined in legacy.cmake]
debug_message¶
-
debug_message
(level)¶ [function defined in debug_message.cmake]
em_expand¶
-
em_expand
(context_in, context_out, em_file_in, file_out)¶ [function defined in em_expand.cmake]
find_program_required¶
-
find_program_required
(ARG_VAR, ARG_PROGRAM_NAME)¶ [function defined in find_program_required.cmake]
find_python_module¶
-
find_python_module
(module)¶ [function defined in empy.cmake]
list_insert_in_workspace_order¶
-
list_insert_in_workspace_order
(listname)¶ [function defined in list_insert_in_workspace_order.cmake]
safe_execute_process¶
-
safe_execute_process
(cmd_keyword, arg1)¶ [function defined in safe_execute_process.cmake]