CMake 安装及使用 
CMake 是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个函式库。 它用配置文件控制建构过程的方式和 Unix 的 make 相似,只是 CMake 的配置文件取名为 CMakeLists.txt。
本教程将介绍如何在 SonmiHPC 上安装并使用 CMake,CMake 安装主要有以下的4种方式:
- 使用 YUM/DNF 包管理器安装;
- 使用 conda 进行安装;
- 直接下载官方编译好的二进制可执行文件;
- 从源码进行编译安装。
本教程将分别介绍前3种安装方式。
1. 使用 YUM/DNF 包管理器安装 
该安装方法是最简单的一种方式,不过需要集群的超级用户权限,并且只能安装特定的版本。执行下面的命令就可以安装完成:
shell
dnf install -y cmakednf install -y cmake2. 使用 conda 进行安装 
在集群上如果已经安装了 conda 的基础上,先创建或者激活一个现有的虚拟环境:
shell
conda create -n cmake
conda activate cmakeconda create -n cmake
conda activate cmake然后执行下面命令进行安装:
shell
conda install anaconda::cmakeconda install anaconda::cmake如果需要指定版本则添加对应的版本号即可,比如要安装 3.9.4 版本的:
shell
conda install anaconda::cmake=3.9.4conda install anaconda::cmake=3.9.43. 直接下载官方编译的二进制可执行文件 
也可以直接从官方下载编译好的二进制可执行文件。先使用 wget 下载压缩包到用户目录下:
shell
wget https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-x86_64.tar.gzwget https://github.com/Kitware/CMake/releases/download/v3.30.0/cmake-3.30.0-linux-x86_64.tar.gz然后进行解压缩:
shell
tar xzvf cmake-3.30.0-linux-x86_64.tar.gztar xzvf cmake-3.30.0-linux-x86_64.tar.gz为方便集群上其他用户使用,创建一个文件夹,并将解压出来的内容复制到文件夹中:
shell
mkdir -p /share/apps/cmake/3.30.0
cp -r cmake-3.30.0-linux-x86_64/. /share/apps/cmake/3.30.0
chmod -R 755 /share/apps/cmakemkdir -p /share/apps/cmake/3.30.0
cp -r cmake-3.30.0-linux-x86_64/. /share/apps/cmake/3.30.0
chmod -R 755 /share/apps/cmake为方便使用,把 CMake 以 Module 模块加载的方式提供给集群内其他用户,新建如下的路径:
shell
mkdir -p /share/apps/modulefiles/cmake/mkdir -p /share/apps/modulefiles/cmake/在该路径下新建一个 Modulefile 文件:
shell
cd /share/apps/modulefiles/cmake/ && vim 3.30.0cd /share/apps/modulefiles/cmake/ && vim 3.30.0文件内容如下:
tcl
#%Module###########################################
set modulefilename "CMake"
set modulefilever  "3.30.0"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}
if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}
setenv CMAKE_ROOT /share/apps/cmake/3.30.0
prepend-path PATH /share/apps/cmake/3.30.0/bin
prepend-path MANPATH /share/apps/cmake/3.30.0/man#%Module###########################################
set modulefilename "CMake"
set modulefilever  "3.30.0"
set min_tcl_ver 8.4
if { $tcl_version < $min_tcl_ver } {
    puts stderr " "
    puts stderr "ERROR: This modulefile requires tcl $min_tcl_ver or greater."
    puts stderr "Your system reports that tclsh version $tcl_version is installed."
    exit 1
}
if { [ module-info mode load ] } {
    puts stderr "Loading $modulefilename version $modulefilever"
}
if { [ module-info mode ] == "unload" || [ module-info mode ] == "remove" } {
    puts stderr "Removing $modulefilename version $modulefilever"
    puts stderr "Use  to view any remaining dependent modules."
}
setenv CMAKE_ROOT /share/apps/cmake/3.30.0
prepend-path PATH /share/apps/cmake/3.30.0/bin
prepend-path MANPATH /share/apps/cmake/3.30.0/man保存文件后设置一下权限:
shell
chmod -R 755 /share/apps/modulefileschmod -R 755 /share/apps/modulefiles集群上用户可以使用如下的命令来加载 CMake 模块:
shell
module load cmake/3.30.0module load cmake/3.30.0