如何在CMakeLists.txt中指定安装CMake的路径

时间:2014-09-23 03:47:52

标签: c++ linux cmake

我从官方网站下载了便携式CMake版本,并将其安装在我的主目录(~/usr)中,因为我没有root或sudo权限。

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

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

PS:

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

4 个答案:

答案 0 :(得分:4)

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脚本之外什么都不做,这只是一个肮脏的黑客攻击。只需从命令行运行正确的可执行文件,你应该没问题。

答案 1 :(得分:4)

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

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

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

这样您只需输入cmake即可找到所需的版本。

答案 2 :(得分:0)

最好的建议是将 cmake 安装在沙箱环境中而不是自己安装,这样可以保留整个环境,同时受益于增加的灵活性。 cmake 依赖于此存在,否则您的环境将成为“版本地狱”。

答案 3 :(得分:-3)

您在CMAKE_INSTALL_PREFIX版本中使用标记CMake设置安装目录,如下所示:

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

不要忘记在任何CMAKE_FLAGS之前加-D

如果您想在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)