设置 CTest (cmake) 环境变量配置具体

Setting CTest (cmake) environment variables configuration specific

在 cmake 脚本中 我有一套依赖于一组插件的测试(其输出因 Windows Debug/Release/RelWithDebInfo 等中的配置而异)。

而且我希望环境变量具有正确的路径,例如

if(WIN32)
    set_tests_properties(${my_test} PROPERTIES ENVIRONMENT "MYVAR=\dir_for_plugins\debug")
endif()

这显然只适用于调试版本。

我都试过了

if(WIN32)
  foreach(cfg_ ${CMAKE_CONFIGURATION_TYPES})
    set_tests_properties(${test_name} PROPERTIES
      ENVIRONMENT_${cfg__} "MYVAR=\dir_for_plugins\${cfg__}")
  endforeach()   
endif

if(WIN32)
    set_tests_properties(${my_test} PROPERTIES ENVIRONMENT "MYVAR=\dir_for_plugins\env{MY_CONFIG_TYPE}")
endif

if(WIN32)
    set_tests_properties(${my_test} PROPERTIES ENVIRONMENT "MYVAR=\dir_for_plugins\%MY_CONFIG_TYPE%")
endif

但是 none 似乎适用于所有配置,因为 env 在 cmake 时解析。有没有办法对这些表达式进行延迟评估,直到给定配置的正确套件测试是 运行?

嗯,我找到了一个选项,"Generator Expressions" https://cmake.org/cmake/help/v3.3/manual/cmake-generator-expressions.7.html

所以使用“$”:

if(WIN32)
    set_tests_properties(${my_test} PROPERTIES ENVIRONMENT "MYVAR=\dir_for_plugins\$<CONFIG>")
endif()