如何“挂钩”到 Cmake 命令 add_executable 或 add_library 来运行额外的东西?

Mik*_*lho 5 cmake

我们使用 CMake 和普通的 Unix makefile 进行构建。有一些静态分析检查,例如Cppcheck,我们在项目中的每个 C/C++ 文件上运行以在编译时捕获错误。

我为 cppcheck 创建了一个自定义目标并将其附加到“all”目标中。这会检查项目中的所有 *.c 和 *.cpp 文件。

我们希望每次更改和重新编译文件时都运行检查,并且仅针对该文件。检查应该自动运行,用户无需在 CMake 中添加额外的命令。本质上,检查应该“附加/挂钩”到正常的 CMake 命令add_library()add_executable(). 在 CMake 中有什么办法可以做到这一点吗?

Tsy*_*rev 6

虽然add_executable(和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)
Run Code Online (Sandbox Code Playgroud)