Предположим, у меня есть две кэшированные строки CMake для установки пользователем, но некоторые комбинации значений конфликтуют.
Пример:
set(FOO OFF CACHE BOOL "Foo")
set(BAR OFF CACHE BOOL "Bar")
но у вас не может быть и Фу, и Бар.
Очевидно, мы можем предотвратить это с помощью:
if (FOO AND BAR)
message(FATAL_ERROR "Can't have both Foo and Bar.")
endif()
а есть ли какой-то другой механизм? например что-то, что в ccmake заставило бы значение BAR вернуться к false, если для FOO установлено значение true, и наоборот?
Примечание. Это упрощенный пример. В простом случае можно просто выбрать один параметр с тремя состояниями, но это не сработает, когда у вас есть несколько возможных значений и несколько более сложный предикат запрещенной комбинации.
CMAKE_DEPENDENT_OPTION
? - person vre   schedule 09.12.2019set(FEATURE "None" CACHE STRING "Could be 'Foo', 'Bar' or 'None'")
. Используя свойство STRINGS, вы можете установить список возможных значений для Графический интерфейс CMake. - person Tsyvarev   schedule 09.12.2019