设置 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()
在 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()