症状是应用程序在用户站点的大多数PC(Windows 7和XP)上正确启动,但在一台计算机上始终无法启动错误"应用程序未能正确初始化(0xc0000135)".有什么问题?
我目前正在将我们当前的构建环境从 MSBuild 迁移到 CMake。我有一种情况,我需要更新PATH变量才能运行单元测试可执行文件。这对 来说不是问题gtest_add_tests,因为它使用源来识别测试。但是gtest_discover_tests,使用--gtest_list_tests标志执行单元测试的无法识别任何测试,因为STATUS_DLL_NOT_FOUND在构建过程中遇到错误。
例如:
add_executable(gTestExe ...)
target_include_directories(gTestExe ...)
target_compile_definitions(gTestExe ...)
target_link_libraries(gTestExe ...)
set (NEWPATH "/path/to/bin;$ENV{PATH}")
STRING(REPLACE ";" "\\;" NEWPATH "${NEWPATH}")
Run Code Online (Sandbox Code Playgroud)
这有效:
gtest_add_tests(TARGET gTestExe TEST_LIST allTests)
set_tests_properties(${all_tests} PROPERTIES ENVIRONMENT "PATH=${NEWPATH}")
Run Code Online (Sandbox Code Playgroud)
但这不会:
#set_target_properties(gTestExe PROPERTIES ENVIRONMENT "PATH=${NEWPATH}")
#set_property(DIRECTORY PROPERTY ENVIRONMENT "PATH=${NEWPATH}")
gtest_discover_tests(gTestExe PROPERTIES ENVIRONMENT "PATH=${NEWPATH}")
Run Code Online (Sandbox Code Playgroud)
编辑:使用gtest_add_tests. 问题是在gtest_discover_tests注册的后期构建步骤中发现测试的调用失败,因为所需的库不在PATH.