Как использовать CMAKE_INSTALL_PREFIX - PullRequest
78 голосов
/ 05 июня 2011

Я хочу сгенерировать Makefile с целью установки, делая установку в / usr вместо по умолчанию / usr / local. Предполагая, что каталог сборки сделан в подкаталоге источника, я выполняю:

cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

CMakeCache.txt содержит: CMAKE_INSTALL_PREFIX:PATH=/usr (ОК?)

Теперь я выполняю:

make
make install

Все файлы по-прежнему установлены в usr / local. Что не так?

Edit: Ни в одном из файлов проекта CMakeLists.txt нет CMAKE_INSTALL_PREFIX. Перед запуском cmake я удаляю все из выходного каталога. директивы установки в CMakeLists.txt выглядят так:

install(TARGETS mylibrary DESTINATION lib)

Ответы [ 3 ]

101 голосов
/ 05 июня 2011

Это должно быть (см. документы ):

cmake -DCMAKE_INSTALL_PREFIX=/usr ..
20 голосов
/ 07 января 2014

Существует два способа использования этой переменной:

  • , передавая ее в качестве аргумента командной строки, как указано в Job:

    cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..

  • присвоение ему значения в CMakeLists.txt:

    SET(CMAKE_INSTALL_PREFIX < install_path >)

    Но не забудьте поместить его ДО команды PROJECT(< project_name>), в противном случаеэто не сработает!

5 голосов
/ 23 июня 2016

Но не забудьте поместить его до команды ПРОЕКТ (<имя_проекта>), иначе она не будет работать!

Моя первая неделя использования 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

Дайте мне знать, если я ошибаюсь, у меня есть много знаний, чтобы сделать.Это весело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...