2014-09-23 443 views
1

我从官方网站下载了可移植CMake版本,并将其安装到我的主目录(~/usr)中,因为我没有root或sudo权限。如何在CMakeLists.txt中指定安装CMake的路径

如何指定在CMakeLists.txt中安装CMake的路径,例如~/usr/cmake-path/bin/cmake

注意:我不想使用CMake的默认版本的Linux系统上它太旧(2.6版本)

PS:

我知道变量CMAKE_COMMAND的这可能对我的问题有用,但我不知道如何使用它!

cmake path/to/sourcedir \ 
    -DCMAKE_INSTALL_PREFIX=path/to/install \ 

不要忘了先于任何CMAKE_FLAGS-D

+0

为什么你想要这条路? – wRAR 2014-09-23 05:49:15

回答

2

的CMake会使用任何路径运行CMake的可执行文件中。此外,它可能会感到困惑,如果。您可以在运行之间切换路径而不清除缓存。

所以你要做的只是从命令行运行cmake <path_to_src>而不是运行~/usr/cmake-path/bin/cmake <path_to_src>

您可能希望将一个别名或shell脚本添加到更具可键入性的路径中(因此您只需键入my_cmake <path_to_src>或类似内容即可)。

请注意,通过编辑CMakeLists.txt并没有干净的方法来解决这个问题。理论上讲,你可以让CMake 2.6运行一个外部CMake脚本,它只能从3.0可执行文件运行一个内部CMake脚本,这只是一个肮脏的黑客。只需从命令行运行正确的可执行文件,你应该没问题。

+0

我必须先尝试一下,howerver,'cmake_need_version'仍然会检查系统的默认版本,而不是自定义版本,尽管我已经设置了'export alias cmake =“〜/ usr/cmake-path/bin/cmake',感谢您的帮助! – YoungkingWang 2014-09-23 09:00:20

+0

@YoungkingWang请确保您确实运行正确的可执行文件。'cmake_minimum_required'不应该关心系统上的任何其他已安装版本,只能查看当前正在运行的二进制文件。 – ComicSansMS 2014-09-23 09:22:02

-2

您在CMake构建过程中进行如下设置使用标志CMAKE_INSTALL_PREFIX安装目录。

如果要包括自定义您的CMakeLists.txt安装前缀,那么你可以包括以下内容:

SET(MY_INSTALL_PREFIX "/path/to/install" CACHE PATH "Prefix added to install directories") 
SET(CMAKE_INSTALL_PREFIX "${MY_INSTALL_PREFIX}" CACHE INTERNAL "Prefix added to install directories" FORCE) 
1

我觉得更强大的解决方案是将您的cmake路径预先安装到PATH环境变量。

export PATH=~/usr/cmake-path/bin:$PATH 

如果您在Ubuntu/Debian系统上,您可以将此命令添加到您的〜/ .bashrc中,以便在每个终端会话中执行该命令。请注意,此更改只会影响您的帐户,您可以在没有管理员权限的情况下对其进行设置。

这样你只需要键入cmake并且首先找到想要的版本。

+1

如果你只需要运行更新的CMake版本,这是非常合理的建议。我个人更喜欢显式的方法,因为通常很容易看到什么时候出现错误(例如,当自定义可执行文件被移动或删除时出于某种原因),但我可以看到人们为了方便可能更喜欢这个。 – ComicSansMS 2014-09-23 09:24:26

+0

@ComicSansMS这很有道理,但同时CMake要求设置'minimum_cmake_required'([从版本2.6.0开始](http://www.cmake.org/cmake/help/v3.0/policy/CMP0000 .html)),如果设置为较新的版本,将很快引起用户的注意。 – jmstoker 2014-09-23 09:36:04