FindBacktrace¶
查找 backtrace(3),这是一个提供应用程序自调试功能的库。
find_package(Backtrace [...])
此模块检查是支持 backtrace(3),是通过标准 C 库(libc)还是通过独立库。
导入的目标¶
此模块提供以下 导入目标
Backtrace::Backtrace3.30 版本新增。
一个封装 Backtrace 用法需求的接口库。此目标仅在找到 Backtrace 时可用。
结果变量¶
此模块定义了以下变量
Backtrace_FOUND布尔值,指示
backtrace(3)支持是否可用。Backtrace_INCLUDE_DIRS使用
backtrace(3)头文件所需的包含目录。Backtrace_LIBRARIES使用
backtrace(3)所需的库(链接器标志),如果有的话。
缓存变量¶
以下缓存变量也可用于设置或使用
Backtrace_HEADERbacktrace(3)所需的头文件。此变量允许在项目代码中动态使用该头文件。它也可以被用户覆盖。Backtrace_INCLUDE_DIR包含
backtrace(3)头文件的目录。Backtrace_LIBRARY提供 backtrace 功能的外部库,如果有的话。
示例¶
查找 Backtrace 并将其链接到项目目标(截至 CMake 3.30)
CMakeLists.txt¶find_package(Backtrace)
target_link_libraries(app PRIVATE Backtrace::Backtrace)
可以使用 Backtrace_HEADER 变量,例如,在一个由 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"
如果项目需要支持 CMake 3.29 或更早版本,可以手动定义导入目标。
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)