#cmake #cmake-gui
#cmake #cmake-графический интерфейс
Вопрос:
У меня есть проект, в котором я использую 2 разные библиотеки в зависимости от интересов пользователя. Во время генерации я хотел бы предоставить пользователю выбор, какую библиотеку создавать. До сих пор я использовал что-то вроде этого:
set(BUILD_WITH_IR OFF CACHE BOOL "build ir")
set(BUILD_WITH_TOF OFF CACHE BOOL "build tof")
Проблема:
Я вижу 2 флажка в графическом интерфейсе CMake для выбора. Я выбираю одну и нажимаю настроить. CMake сбрасывает оба флажка в положение ВЫКЛ (снято). Понятно, потому что оба значения отключены при каждой настройке CMake.
Я бы хотел, чтобы пользователь мог выбирать только один вариант за раз. На основе выбора пользователя я настраиваю остальную часть своего проекта.
Как я могу сделать эти переменные взаимоисключающими?
Комментарии:
1. ? В чем смысл? Сделать
set(BUILD_WITH nothing CACHE STRING "build with that thung")
сset_property(CACHE BUILD_WITH PROPERTY STRINGS nothing IR TOF)
. Странно создавать multiption, используя несколько логических параметров… blog.kitware.com/… В любом случае, это должно быть выполнимо с помощью cmake_dependent_option .
Ответ №1:
Это выглядит как один параметр, который принимает несколько значений, а не два отдельных несвязанных параметра. Попробуйте:
set(YOURLIB_BUILD_WITH "NOTHING" CACHE STRING "build with that thing")
set_property(CACHE YOURLIB_BUILD_WITH PROPERTY STRINGS "NOTHING" "IR" "TOF")
Комментарии:
1. Может быть, вы также можете добавить, как это сделать с помощью cmake_dependent_option . Помогло бы другим. Спасибо!