如何从命令行正确设置 CMAKE_INSTALL_PREFIX

我希望生成一个带有 install目标的 Makefile,使安装到 /usr而不是默认的 /usr/local。假设构建目录是源目录的一个子目录,我执行:

cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

Txt 包含: CMAKE_INSTALL_PREFIX:PATH=/usr(OK?)

现在我执行:

make
make install

所有文件仍然安装到 usr/local。出了什么问题?

编辑: 在任何 CMakeLists.txt 项目文件中都没有 CMAKE_INSTALL_PREFIX。 在运行 cmake 之前,我从输出目录中删除所有内容。 Txt 中的 install 指令类似于:

install(TARGETS mylibrary DESTINATION lib)
203175 次浏览

这应该是(见 医生) :

cmake -DCMAKE_INSTALL_PREFIX=/usr ..

有两种方法可以使用这个变量:

  • 将其作为命令行参数传递,就像约伯提到的那样:

    cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..

  • CMakeLists.txt中赋值给它:

    SET(CMAKE_INSTALL_PREFIX < install_path >)

    但是 记得把它放在 PROJECT(< project_name>)命令,否则它不会工作!

但是请记住在 PROJECT (< PROJECT _ name >)命令之前放置它, 否则它不会工作!

我使用 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

如果我弄错了请告诉我,我还有很多东西要学,很有趣的。

这对我很有效:

把这段代码放在最上面的 cmakelist.txt:

SET(CMAKE_INSTALL_PREFIX < install_path >)

出于某种原因,通过命令行进行操作对我来说不起作用:

-D CMAKE_INSTALL_PREFIX=/home/user/Human-Detection-Module/build/install/