Cmake выражения генератора позволяют мне использовать логические выражения в определенных вызовах функций. Например, если я хочу добавить флаг /MTd
компилятора в режиме отладки, могу сказать
add_compile_options($<$<CONFIG:Debug>:/MTd>)
Если CONFIG
равно "Debug", это вызовет add_compile_options
со значением "/MTd", в противном случае с пустой строкой.
Но обычно я не хочу выбирать между значением и пустой строкой, но между двумя значениями. В приведенном выше примере, если CONFIG
не является "Debug", я хочу передать /MT
(без конечного d). Мне бы хотелось иметь такой синтаксис:
add_compile_options($<$<CONFIG:Debug>:/MTd:/MT>)
Обратите внимание, что приведенный выше недействительный код соответствует спецификациям CMake. Самое лучшее, что я придумал, это на самом деле:
add_compile_options($<$<CONFIG:Debug>:/MTd>$<$<NOT:$<CONFIG:Debug>>:/MT>)
Это кажется ужасно лишним для меня. Существует ли более короткий и понятный способ выбора между двумя значениями?
Примечание. Я понимаю, что в этом специальном случае я мог бы написать это:
add_compile_options(/MT$<$<CONFIG:Debug>:d>)
Но это кажется довольно хакированным для меня и работает только в тех случаях, когда один параметр является подстрокой другого.