Включить параметры / флаг 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 и заполняет его настраиваемыми параметрами для проекта. Эта опция может использоваться, чтобы указать настройку, которая имеет приоритет над значением проекта по умолчанию. Опция может быть повторена для любого количества записей в кэше. Так что если есть какие-то опции проекта по умолчанию, которые нужно изменить / перезаписать, то это можно сделать с помощью этого.