如何使用CMAKE_INSTALL_PREFIX

我想用安装目标生成Makefile,安装到/ usr,而不是默认的/ usr / local。 假设build目录在源子目录中完成,我执行:

cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr ..

CMakeCache.txt包含: CMAKE_INSTALL_PREFIX:PATH=/usr (OK?)

现在我执行:

使
进行安装

所有文件仍然安装到usr / local。 哪里不对?

编辑:任何CMakeLists.txt项目文件中都没有CMAKE_INSTALL_PREFIX。 在运行cmake之前,我从输出目录中删除所有内容。 在CMakeLists.txt中安装指令如下所示:

install(TARGETS mylibrary DESTINATION lib)

这应该是(看文档 ):

 cmake -DCMAKE_INSTALL_PREFIX=/usr .. 

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

  • 把它作为命令行parameter passing,就像Job提到的一样:

    cmake -DCMAKE_INSTALL_PREFIX=< install_path > ..

  • CMakeLists.txt为其赋值:

    SET(CMAKE_INSTALL_PREFIX < install_path >)

    但是请记住将它放在 PROJECT(< project_name>)命令之前,否则它将不起作用!

但是请记住将它放在项目(<project_name>)命令之前,否则它将不起作用!

我使用cmake的第一个星期 – 经过几年的GNU autotools – 所以我仍然在学习(最好是编写m4macros),但是我认为设置项目之后修改CMAKE_INSTALL_PREFIX是更好的select。

的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") 

首先运行(无caching)

 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 

让我知道如果我错了,我有很多学习要做。 好有趣。