我从官网下载了便携式版本的CMake,并将其安装在我的主目录下(~/usr
),因为我没有root或sudo权限。
如何在 CMakeLists.txt 中指定 CMake 安装路径,例如 ~/usr/cmake-path/bin/cmake
?
注意:我不想使用Linux系统上默认版本的CMake,因为它太旧了(版本为2.6)。
PS:
我知道变量CMAKE_COMMAND
可能对我的问题有用,但我不知道如何使用它!
我认为更加稳健的解决方案是将您的cmake路径添加到PATH环境变量之前。
export PATH=~/usr/cmake-path/bin:$PATH
如果您使用的是Ubuntu/Debian系统,则可以将此命令添加到您的~/.bashrc中,以便在每个终端会话中执行它。请注意,此更改仅影响您的帐户,并且您可以在不需要管理员权限的情况下进行设置。
这样一来,您只需要键入cmake
,就会首先找到所需版本。
minimum_cmake_required
(自2.6.0版本起),如果设置为更新的版本,将会迅速引起用户的注意。 - jmstokerCMake会使用运行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_need_version
仍然会检查系统的默认版本而不是自定义版本,尽管我已经设置了 export alias cmake="~/usr/cmake-path/bin/cmake"
。无论如何,感谢你的帮助! - YoungkingWangcmake_minimum_required
不应关注系统上安装的其他版本,而只应查看当前运行的二进制文件。 - ComicSansMS您可以在 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)