cmake - 如何“挂钩”到 Cmake 命令 add_executable 或 add_library 以运行额外的东西?
问题描述
我们使用 CMake 和普通的 Unix makefile 构建。有一些静态分析检查,例如Cppcheck,我们在项目中的每个 C/C++ 文件上运行以在编译时捕获错误。
我为 cppcheck 创建了一个自定义目标并将其附加到“全部”目标中。这将检查项目中的所有 *.c 和 *.cpp 文件。
我们希望在每次更改和重新编译文件时运行检查,并且仅在该文件上运行。检查应该自动运行,用户无需在 CMake 中添加额外的命令。本质上,检查应该“附加/挂钩”到正常的 CMake 命令add_library()
和add_executable()
. 在 CMake 中有什么方法可以做到这一点吗?
解决方案
虽然add_executable
(and add_library
) 由 CMake 本身提供,但您可以定义具有相同名称的函数或宏,这将“隐藏”原始 CMake 函数。在您的函数/宏中,您可以使用带下划线前缀的名称调用原始 CMake 函数:
function(add_executable target_name)
# Call the original function
_add_executable(${target_name} ${ARGN})
... perform additional steps...
endfunction(add_executable target_name)
推荐阅读
- c# - 哈希密码失败
- anova - 使用 mgcv gam 的负二项式混合模型中固定效应的重要性
- ios - 使用 OAuth2.0 为 iOS 应用中的多个目标配置 SSO
- php - 检测文件是否是 PHP 中没有 mime 类型的音频文件
- bash - 我想剪切所有文件名
- spring-webflux - 如何自定义 Spring webflux 错误页面
- javascript - 以不同的高度排列 div 一个在另一个之下(超级菜单)
- angular - The type 'void' can not be assigned to the type 'ObservableInput
' - c++ - 在C++中将双变量写入二进制文件
- recursion - RISC-V 汇编中的递归程序