CMake :运行 ctest 时可执行文件崩溃



我正在为 MSVC++ 项目在 Windows 上配置 CMake 构建项目。它构建好的可执行文件,然后将其安装到定义的目录中。在我的情况下,那是:

${CMAKE_SOURCE_DIR}/x64/${CMAKE_BUILD_TYPE}/

可执行文件在启动时加载的文件位于同一目录中。如果我手动启动.exe它会打开并运行正常。但我想通过测试来做到这一点。我是这样定义的:

add_test(ENGINE_TEST1 ${CMAKE_SOURCE_DIR}/x64/${CMAKE_BUILD_TYPE}/MyApp.exe 
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/x64/${CMAKE_BUILD_TYPE})

当我从cmd打电话时:

ctest

可执行文件正在启动,但立即崩溃并显示错误:

调试错误!

程序:。。/..../.../MyApp.exe

R6010 -abort() 有

被召唤了。

事实上,在检查 CMake 的 Last Test.log 文件时,它显示它不是在"WORKING_DIRECTORY中运行测试,而是在 CMake 构建 MyApp.exe 的目录中运行测试。我该如何更改它?

由于我不是CMake pro,我确信以下答案不是最佳方法,但至少它对我有用。同样,我试图从 cmake 安装它的目录中对可执行文件运行 ctest。启动时的exe正在尝试加载同一目录中的相关文件。但它崩溃了,因为它无法控制文件。cmake 默认工作区目录似乎是生成 cmake 文件和项目的目录。这就是"构建"目录。因此,当通过 ctest 启动可执行文件时,它会相对于构建目录搜索要加载的文件的路径。现在,CMAKE 有 2 种add_test() 方法的变体。一个是简单的参数:

 add_test([test_name]  [test exe path])

它不负责工作目录。

这里解释的另一个确实包括显式设置工作目录的参数。

坦率地说,我无法让这个高级功能工作,因为它需要提供一些我不明白如何设置的测试.config。所以我所做的,我使用了简单的add_test函数。然后我使用以下命令将工作目录设置为可执行文件的位置:

 set_tests_properties(mytest PROPERTIES WORKING_DIRECTORY "${TEST_WOKRING_DIR}")

它解决了这个问题。

相关内容

  • 没有找到相关文章

最新更新