[英]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.