2

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

我想要和 env 变量有正确的路径,比如

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

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

4

1 回答 1

0

嗯,我找到了一个选项,带有“生成器表达式” 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()
于 2016-07-02T02:32:08.640 回答