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