Для некоторых внутренних тестов я бы хотел, чтобы установочный префикс по умолчанию был подкаталогом каталога сборки, если явно не переопределен пользователем. Я знаю, что пользователь может указать префикс установки:
$ cmake -DCMAKE_INSTALL_PREFIX=/foo/bar ..
Но если пользователь этого не укажет, он должен по умолчанию, например, ${PWD}/installed
.
Переменная CMAKE_INSTALL_PREFIX
уже установлена на /usr/local
, поэтому я не могу просто проверить, не удаляться ли она до ее установки.
Мое текущее решение заключается в добавлении пользовательского переключателя, который пользователь должен вызывать, чтобы указать, что переменная CMAKE_INSTALL_PREFIX
получает уважение:
option(ENABLE_INSTALL_PREFIX "Install build targets to system (path given by '-DCMAKE_INSTALL_PREFIX' or '${CMAKE_INSTALL_PREFIX}' if not specified)." OFF)
if ( ENABLE_INSTALL_PREFIX )
set (CMAKE_INSTALL_PREFIX installed CACHE PATH "Installation root")
else()
set (CMAKE_INSTALL_PREFIX installed CACHE PATH "Installation root" FORCE)
endif()
Мои вопросы:
(a) Есть ли какие-либо проблемы с вышеупомянутым, помимо раздражения дополнительного флага, который необходимо передать CMake, чтобы получить CMAKE_INSTALL_PREFIX
, чтобы иметь эффект?
(b) Есть ли лучший, более чистый, более надежный, более идиоматический и/или менее раздражающий способ достижения вышеуказанного?
Спасибо.