У меня есть библиотека с кучей различных вариантов конфигурации. Обычно мы настраиваем сборку с cmake-gui
и отметив несколько флажков.
Я хочу автоматизировать это в .sh
скрипт, использующий только cmake
,
например
В GUI -> выделяет кучу разных опций
эквивалентная команда cmake -> cmake -D CMAKE_XXX=X -D CMAKE_XXY=XXY [a bunch of options here] ..
Как я могу найти «эквивалент» cmake
командная строка для любой произвольной конфигурации, которую я выбираю из графического интерфейса?
Объясняется эквивалентная команда cmake для кэширования переменной Вот (-D
опция). Обратите внимание, что предыдущая документация была неоднозначной, поэтому всегда проверяйте последнюю версию.
В принципе:
-D<var>:<type>=<value>
Вы также должны указать тип, чтобы переменная кэшировалась так же, как в вашей процедуре cmake-gui. Обратите внимание, что определение переменной необходимо только в первый раз: если больше не указано, будет использовано кэшированное значение.
Вы можете написать файл, содержащий все переменные, которые вы хотите установить set(<var_name> <value>)
и передать этот файл в вызов CMake через -C
:
cmake -C <fileWithInitialValues> <pathToSrcDir>
Документация:
https://cmake.org/cmake/help/v3.3/manual/cmake.1.html
У меня был тот же вопрос … и, как вы спросили, я посмотрел некоторые параметры в меню и нашел его. Инструменты меню -> Показать мои изменения
Вывод диалогового окна с полем редактирования с содержимым для параметров командной строки или параметров файла кэша.
да уж
постскриптум Я использовал cmake 3.11.1
cmake-gui генерирует файлы CMakeVars.txt и CMakeCache.txt в каталоге сборки, когда вы нажимаете кнопку «Настроить». Они кэшируют все переменные, которые вы настроили через графический интерфейс.
просто прочитайте файл с именем как CMakeCache.txt (iirc) в корне каталога сборки и посмотрите там имена переменных