You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让CMake显示Catch2编译错误对应的项目内溯源位置

问题描述

我目前正在开发一个依赖Eigen、Catch2、Kokkos等第三方库的大型库项目,全程使用CMake完成构建与链接工作。由于项目依赖关系复杂,暂时难以提供最小可复现示例(MWE)。当前预编译版本的Catch2在编译阶段抛出错误,但CMake未显示该错误在我自有库代码中的触发位置。

CMake启动代码编译后,最终输出如下错误信息:

[ 59%] Building CXX object CMakeFiles/RunTests.dir/tests/Test_File.cpp.o
/home/jovyan/installs/CATCH2/include/catch2/benchmark/catch_constructor.hpp(62): error: invalid type conversion

1 error detected in the compilation of "/home/jovyan/.../tests/Test_File.cpp".
make[2]: *** [CMakeFiles/RunTests.dir/build.make:121: CMakeFiles/RunTests.dir/tests/Test_File.cpp.o] Error 2
make[1]: *** [CMakeFiles/Makefile2:140: CMakeFiles/RunTests.dir/all] Error 2
make: *** [Makefile:149: all] Error 2

该报错并非单个文件特例:如果移除上述Test_File.cpp,其他所有引入了Catch2/catch_all.hpp的测试文件(已测试多个文件均复现)编译时都会抛出完全相同的错误。

待解决问题

如何配置CMake,才能定位到该错误在我自有项目代码中的触发位置?

补充信息
  • 代码使用g++编译时可正常通过,无报错
  • 当前正在验证代码的GPU端兼容性,因此使用Kokkos提供的nvcc_wrapper作为编译器
  • 暂时无法剥离外部依赖构造独立复现场景,后续会持续尝试构造最小复现示例(MRE)
  • 目前已确认问题源于自有库代码与Kokkos/Catch2的交互逻辑

内容的提问来源于stack exchange,提问作者Danny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 00:42:30