如何使用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
让我知道如果我错了,我有很多学习要做。 好有趣。