设置CTest(cmake)环境变量配置特定

时间:2016-07-02 01:05:54

标签: visual-c++ cmake ctest

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

我希望并使用正确的路径改变变量,例如

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

这显然只适用于Debug版本。

我试过了

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

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

1 个答案:

答案 0 :(得分:0)

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

所以使用" $< CONFIG>":

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