Как использовать префикс установки CMAKE
Я хочу создать Makefile с целью установки, сделав установку в /usr вместо default/usr / local. Предполагая, что каталог сборки выполняется в исходном подкаталоге, я выполняю:
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..
CMakeCache.txt содержит: CMAKE_INSTALL_PREFIX:PATH=/usr (ОК?)
теперь я исполняю:
make
make install
все файлы по-прежнему установлены в usr/local. Что случилось?
изменить:
В любом из CMakeLists нет CMAKE_INSTALL_PREFIX.проект txt файлы.
Перед запуском cmake я удаляю все из выходного каталога.
установите директивы в CMakeLists.текст выглядит так:
install(TARGETS mylibrary DESTINATION lib)
3 ответов:
Это должно быть (см. docs):
cmake -DCMAKE_INSTALL_PREFIX=/usr ..
есть два способа использовать эту переменную:
передача его в качестве аргумента командной строки так же, как упоминалось в Job:
cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..присвоение ему значения в
CMakeLists.txt:
SET(CMAKE_INSTALL_PREFIX < install_path >)но не забудьте разместить его перед
PROJECT(< project_name>)команда, иначе она не будет работать!
но не забудьте поместить его перед командой PROJECT () , иначе ничего не получится!
моя первая неделя использования cmake-после нескольких лет GNU autotools-так что я все еще учусь (лучше, чем писать макросы m4), но я думаю, что изменение CMAKE_INSTALL_PREFIX после настройки проекта-это лучшее место.
CMakeLists.txt
cmake_minimum_required (VERSION 2.8) set (CMAKE_INSTALL_PREFIX /foo/bar/bubba) message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba") project (BarkBark) message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba") set (CMAKE_INSTALL_PREFIX /foo/bar/bubba) message("CIP = ${CMAKE_INSTALL_PREFIX} (should be /foo/bar/bubba")первый запуск (без кэша)
CIP = /foo/bar/bubba (should be /foo/bar/bubba -- The C compiler identification is GNU 4.4.7 -- etc, etc,... CIP = /usr/local (should be /foo/bar/bubba CIP = /foo/bar/bubba (should be /foo/bar/bubba -- Configuring done -- Generating doneвторой беги
CIP = /foo/bar/bubba (should be /foo/bar/bubba CIP = /foo/bar/bubba (should be /foo/bar/bubba CIP = /foo/bar/bubba (should be /foo/bar/bubba -- Configuring done -- Generating doneДайте мне знать, если я ошибаюсь, у меня есть много, чему поучиться. Это весело.
Comments