FindBacktrace

Finds backtrace(3), a library that provides functions for application self-debugging.

This module checks whether backtrace(3) is supported, either through the standard C library (libc), or a separate library.

Imported Targets

Added in version 3.30.

This module provides the following Imported Targets:

Backtrace::Backtrace

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_INCLUDE_DIRS

The include directories needed to use backtrace(3) header.

Backtrace_LIBRARIES

The libraries (linker flags) needed to use backtrace(3), if any.

Backtrace_FOUND

Boolean indicating whether the backtrace(3) support is available.

Cache Variables

The following cache variables are also available to set or use:

Backtrace_HEADER

The 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_LIBRARY

The external library providing backtrace, if any.

Backtrace_INCLUDE_DIR

The directory holding the backtrace(3) header.

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)