AFAIK, вы не можете сделать это с генераторными выражениями (нет способа запросить этот аспект в соответствии с doc), поскольку BUILD_SHARED_LIBS существует именно по этой причине; чтобы позволить вам выбрать его значение во время настройки (используя параметр командной строки -D
). Это будет работать, только если вы не установили тип библиотеки явно, как в вашем коде, но вроде этого
add_library(MyLibrary ${SOURCES})
На самом деле, это рекомендуемая практика. Если вам нужно повлиять на его значение в связи с каким-либо другим условием, вы можете переопределить его с помощью обычной логики if()/else()
, убедившись, что вы печатаете для пользователя хотя бы информативный message()
.
Тем не менее, еще лучшим подходом было бы передать эти решения пользователю (с помощью опции s) и проверить наличие недопустимых комбинаций, выдав message(FATAL_ERROR)
. Даже если это условие определяется автоматически, эта тактика по-прежнему заслуживает внимания.