Visual Studio 2019中的测试资源管理器将忽略CMake设置的环境PATH变量

时间:2019-12-20 15:57:03

标签: c++ cmake visual-studio-2019 ctest

我有一个带有Visual Studio 2019生成器的CMake项目,在Windows中工作。我正在使用gtest和ctest定义一些单元测试。

我正在使用动态库。对于其中的每一个,我都定义了一个与之链接的测试可执行文件。我正在使用CMake命令“ add_test”定义测试。这些可执行文件与我要测试的库动态链接。因此,在启动测试执行程序之前,我需要使用指向这些库位置的路径来设置PATH环境。我使用cmake命令执行此操作:

set_property(TEST ${UNIT_TEST_NAME} APPEND PROPERTY
        ENVIRONMENT "PATH=${librarypath}")

这是我的CMake文件的简化摘录。

#Enabling unit tests
enable_testing()

include(FindGTest)
find_package(gtest REQUIRED)

ADD_LIBRARY (${LIB_NAME}

ADD_EXECUTABLE(${UNIT_TEST_NAME})

TARGET_LINK_LIBRARIES(${UNIT_TEST_NAME}
                              ${LIB_NAME}
                             )

add_test(NAME ${UNIT_TEST_NAME} COMMAND ${UNIT_TEST_NAME})

set_property(TEST ${UNIT_TEST_NAME} APPEND PROPERTY
        ENVIRONMENT "PATH=${librarypath}")

Cmake运行完美,并且在Visual Studio中生成了项目。构建解决方案,并通过构建目标RUN_TESTS(或手动运行Ctest.exe)正确运行测试。

问题来自嵌入式测试浏览器。它无法发现任何测试。引发的错误是:

ERROR: Could not list test cases for executable 'XXX/test.exe': process execution failed with exit code -1073741515
Could not locate debug symbols for 'XXX\test.exe'. To make use of '--list_content' discovery, ensure that debug symbols are available or make use of '<ForceListContent>' via a .runsettings file.

重点是,我认为CMake代码和c ++代码是可以的,因为可以完美地生成项目并且可以使用CTest运行测试。只需提及我使用makefile在Linux中构建并运行了同一项目,它也运行良好。这是Visual Studio中的错误吗?还是我没有适当设置某些内容?

我在CMake 3.16.1和VS2019 16.4.2版本中遇到此问题。

0 个答案:

没有答案