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

How to specify the path where CMake is installed in the CMakeLists.txt

本文关键字:CMake 安装 路径 CMakeLists txt      更新时间:2023-10-16

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

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

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

PS:

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

我觉得一个更健壮的解决方案是为path环境变量预先设置cmake路径。

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

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

这样,您只需要键入cmake,就会首先找到所需的版本。

CMake将使用运行中的CMake可执行文件所在的任何路径。此外,如果在不清除缓存的情况下在运行之间切换路径,可能会混淆。

因此,您所要做的只是运行~/usr/cmake-path/bin/cmake <path_to_src>,而不是从命令行运行cmake <path_to_src>

您可能想在更易于键入的路径中添加一个别名或shell脚本(所以您只需要键入my_cmake <path_to_src>或类似的内容)。

请注意,没有一种简单的方法可以通过编辑CMakeLists.txt来解决这个问题。虽然理论上你可以让CMake 2.6运行一个外部CMake脚本,它除了运行3.0可执行文件中的内部CMake之外什么都不做,但这只是一个肮脏的破解。只需从命令行运行正确的可执行文件,就可以了。

最好的建议是在沙箱环境中安装cmake,而不是自己安装,这是在保留整个环境的同时提高了灵活性。cmake的存在依赖于此,否则您的环境将变成"版本地狱"。

CMake构建过程中使用标志CMAKE_INSTALL_PREFIX设置安装目录,如下所示:

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)