Как использовать префикс установки 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)

1203   3  

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

    Ничего не найдено.