我目前正在尝试使用 MinGW 在 Windows 上使用 CMake 中的 Gcov 和 Gcovr。使用正确的标志编译文件就像一个魅力。但是,CLion 使用 Gcov 不理解的源代码外构建。
在 Linux 上,我使用以下内容将所有*.gcda
和复制*.gcno
到CMAKE_SOURCE_DIR
fromCMAKE_BINARY_DIR
子文件夹:
set(GCOV_DATA_DIR "${CMAKE_SOURCE_DIR}/gcov_data")
add_custom_target(prepare_coverage
# Copy necessary files to CMAKE_SOURCE_DIR
COMMAND ${CMAKE_COMMAND} -E make_directory ${GCOV_DATA_DIR}
COMMAND find ${CMAKE_BINARY_DIR} -name \"*.gcda\" -o -name \"*.gcno\" | xargs -l -i cp {} "${GCOV_DATA_DIR}"
)
请注意,测试二进制文件在CMAKE_BINARY_DIR
. 这工作得很好,之后我可以用一些额外的标志调用 Gcovr 来获得一份不错的报告。
但是,在 Windows 上我没有xargs
(我已经很惊讶它find
确实有效)。为了使这个 CMake 命令与平台无关,我正在寻找一种方法来让 CMake 在构建期间找到并复制/移动文件(类似于制作目录)。
谁能告诉我这是否可能以及我应该怎么做?当然,我总是可以安装额外的程序或脚本,但我宁愿在 CMake 中解决这个问题,而不必指示所有开发人员安装不同的工具。