繁体   English   中英

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

[英]CMake : Executable crashes when running ctest

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

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

该可执行文件在启动时会加载一个文件所在的目录,如果我手动启动.exe,它将打开并运行正常,但我想通过ctest来执行。 我这样定义ctest:

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专业人士,所以我确信以下答案不是最佳的解决方法,但至少对我有用。 再次,我试图从cmake的安装目录中的可执行文件上运行ctest。启动时的exe试图加载位于同一目录中的相关文件。但是由于无法查找而崩溃文件。 似乎cmake的默认工作区目录是生成cmake文件和项目的目录,即``build''目录,因此当通过ctest启动可执行文件时,它将搜索要加载的文件相对于build目录的路径。 现在,CMAKE有2种add_test ()方法的变体。 一种是带参数的简单方法:

 add_test([test_name]  [test exe path])

它不会处理工作目录。

在此说明的另一个参数的确包含一个用于显式设置工作目录的参数。

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

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

它解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM