我正在做一个需要大量时间来构建(10-15)分钟的项目。我已经重新编译以验证是否存在编译错误。现在我想更改安装目录,以便我拥有带有新更改的新版本的可执行文件。有没有一种方法可以修改安装路径,以便“make install”安装到新位置而不是旧位置?
5 回答
CMake 生成的 makefile 支持 makefile 的DESTDIR 编码约定。DESTDIR
因此,您可以通过在调用 make 时设置变量来覆盖默认安装位置:
$ make install DESTDIR=/opt/local
无需重新运行 CMake。
我不知道这是否普遍正确,但我可以举一个应用程序的示例,其中接受的答案无法sakra
正常工作。如果您在安装 ITK 时通过修改来修改安装目录DESTDIR
,它只会追加DESTDIR
到其已形成的安装路径:
make install DESTDIR=/opt/local
[...]
-- Installing: /opt/local/usr/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
另一方面,遵循此答案将Fraser
导致正确的安装路径而无需重新编译:
cmake -DCMAKE_INSTALL_PREFIX=/opt/local /path/to/ITK_source
make install
[...]
-- Installing: /opt/local/lib/cmake/ITK-4.4/WrapITK/Configuration/Typedefs/itkRenyiEntropy[...]
运行 CMake-DCMAKE_INSTALL_PREFIX=<somewhere different to last time>
不会导致您的项目需要重新编译。如果您将其他命令行参数传递给 CMake,例如更改编译器标志,这将强制重建受影响的目标,但简单地更改安装前缀不会。
DESTDIR 和前缀的规范定义是:文件安装到 $DESTDIR$prefix,但准备好好像它们的最终安装位置只是 $prefix。
所以 DESTDIR 仅适用于构建二进制包或 tarball 的人;CMAKE_INSTALL_PREFIX 适用于任何想要指定构建的二进制文件最终应该放在哪里的人。
以防万一有人不使用 CMake,那么在 Makefile 中有一种方法可以做到这一点。如果您在构建目录中生成了 Makefile.config 文件,请找到prefix
. 这prefix
是将安装path
二进制文件/头文件等的安装。更改此设置会将二进制文件/头文件安装到修改后的path
.