Включить параметры / флаг cmake после создания файла

У меня мало знаний о cmake. Я установил пакет libfreenect2, следуя инструкциям на их странице github. Инструкции были следующими:

Клонируйте хранилище. И выполните шаг cmake:

cd ..
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install

Однако после установки я понял, что программа / пакет, который требует libfreenect2 как зависимость, требует от меня использования:

cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 -DENABLE_CXX11=ON

Возможно, вы заметили, мне потребовалось использовать дополнительный флаг -DENABLE_CXX11=ON. Как я могу это исправить? Как я могу установить ENABLE_CXX11=ON после завершения всего процесса сборки? Кстати, что делает -D? (эти -DXXX вещи называются опциями или флагом)

Если ваш ответ состоит в том, чтобы повторить весь процесс еще раз, то, пожалуйста, проведите меня через пошаговый процесс удаления правильных файлов. Я не хочу удалять другие зависимости.

Вот некоторые другие ответы на стекопотоки, относящиеся к cmake-set cmake option (), cmake option для включения каталога, что делает cmake

РЕШЕНИЕ - Я использовал принятое решение, чтобы включить флаг. Несмотря на то, что это сработало для моей проблемы (libfreenect2), все равно будет удивительно, если кто-то сможет дать ответ, который не включает переустановку.

1 ответ

Решение

Мое горячее предложение было бы повторить процесс с этим вариантом ON,
Сначала вы должны удалить то, что было сгенерировано ранее.
Последовательность команд следующая:

rm -rf build
rm -rf $HOME/freenect2

просто чтобы быть полностью уверенным, что вы начинаете с "чистого состояния".
Я не вижу необходимости делать rm -rf $HOME/freenect2 так как эти файлы / каталог будут перезаписаны новой установкой, но это не должно повредить.
Вы также можете попробовать предложение в SO посте, упомянутом в одном из комментариев.
Затем повторите процесс с корневого каталога libfreenect2:

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 -DENABLE_CXX11=ON
make
make install  

В качестве альтернативы, если вы полностью уверены, что вы будете строить libfreenect2 всегда с этим вариантом ENABLE_CXX11=ONВы можете явно включить его раз и навсегда в CMakeLists.txt из libfreenect2, конкретно меняя строку:

OPTION(ENABLE_CXX11 "Enable C++11 support" OFF)

в

OPTION(ENABLE_CXX11 "Enable C++11 support" ON)  

В этом последнем случае вам просто нужно сделать

mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
make
make install  

конечно после того, как вы убрали, как объяснено в начале.


Около -D для CMake, он позволяет передавать параметры. Прямо из документации:

-D <var>:<type>=<value>

Создайте запись в кэше cmake.

Когда cmake впервые запускается в пустом дереве сборки, он создает файл CMakeCache.txt и заполняет его настраиваемыми параметрами для проекта. Эта опция может использоваться, чтобы указать настройку, которая имеет приоритет над значением проекта по умолчанию. Опция может быть повторена для любого количества записей в кэше. Так что если есть какие-то опции проекта по умолчанию, которые нужно изменить / перезаписать, то это можно сделать с помощью этого.

Другие вопросы по тегам