Tim*_*mmm 7 c++ cmake ctest clion
我在 CLion 中使用 CMake 和 CTest。令人讨厌的是,CTest 生成了大量我不关心的目标:
这些都出现在 CLion 中。很烦人,因为我相信你会同意。有没有办法去除它们?我对任何解决方案持开放态度:
除非您使用 CDash,否则解决方案非常简单。
在你的 CMakefile 中替换
include(CTest)
Run Code Online (Sandbox Code Playgroud)
和
enable_testing()
Run Code Online (Sandbox Code Playgroud)
黑客警告 - 下面的黑客依赖于内部实现细节 ( CTestTargets.cmake ),因此不能保证适用于任何 CMake 版本。
如果无法避免include(CTest),因为某些 CTest 功能是必需的,但无法通过使用enable_testing(),例如 Valgrind 集成,则可以使用以下 hack 来完全避免自动 CTest 目标的生成:
set_property(GLOBAL PROPERTY CTEST_TARGETS_ADDED 1) # hack to prevent CTest added targets
include (CTest)
Run Code Online (Sandbox Code Playgroud)
设置CTEST_TARGETS_ADDED为1先于包含CTest将阻止生成自动 CTest 目标。
我已经使用 CMake 3.6 对此进行了测试,它应该可以通过 CMake 3.19.6(其中CTEST_TARGETS_ADDED仍在使用该宏)工作。
我不确定是否 100% 有效的一个可能的解决方案是转到 CLion 中的“运行”->“编辑配置...”,然后删除所有不需要的目标。
这似乎在重新加载 CMake 配置后仍然存在,并且make clean.