FindBacktrace¶
Finds backtrace(3), a library that provides functions for application self-debugging:
find_package(Backtrace [...])
This module checks whether backtrace(3) is supported, either through the
standard C library (libc), or a separate library.
Imported Targets¶
This module provides the following Imported Targets:
Backtrace::BacktraceAdded in version 3.30.
An interface library encapsulating the usage requirements of Backtrace. This target is available only when Backtrace is found.
Result Variables¶
This module defines the following variables:
Backtrace_FOUNDBoolean indicating whether the
backtrace(3)support is available.Backtrace_INCLUDE_DIRSThe include directories needed to use
backtrace(3)header.Backtrace_LIBRARIESThe libraries (linker flags) needed to use
backtrace(3), if any.
Cache Variables¶
The following cache variables are also available to set or use:
Backtrace_HEADERThe header file needed for
backtrace(3). This variable allows dynamic usage of the header in the project code. It can also be overridden by the user.Backtrace_INCLUDE_DIRThe directory holding the
backtrace(3)header.Backtrace_LIBRARYThe external library providing backtrace, if any.
Examples¶
Finding Backtrace and linking it to a project target as of CMake 3.30:
CMakeLists.txt¶find_package(Backtrace)
target_link_libraries(app PRIVATE Backtrace::Backtrace)
The Backtrace_HEADER variable can be used, for example, in a configuration
header file created by configure_file():
CMakeLists.txt¶add_library(app app.c)
find_package(Backtrace)
target_link_libraries(app PRIVATE Backtrace::Backtrace)
configure_file(config.h.in config.h)
config.h.in¶#cmakedefine01 Backtrace_FOUND
#if Backtrace_FOUND
# include <@Backtrace_HEADER@>
#endif
app.c¶#include "config.h"
If the project needs to support CMake 3.29 or earlier, the imported target can be defined manually:
CMakeLists.txt¶find_package(Backtrace)
if(Backtrace_FOUND AND NOT TARGET Backtrace::Backtrace)
add_library(Backtrace::Backtrace INTERFACE IMPORTED)
set_target_properties(
Backtrace::Backtrace
PROPERTIES
INTERFACE_LINK_LIBRARIES "${Backtrace_LIBRARIES}"
INTERFACE_INCLUDE_DIRECTORIES "${Backtrace_INCLUDE_DIRS}"
)
endif()
target_link_libraries(app PRIVATE Backtrace::Backtrace)