cmake-3.14.5をCentOS6にソースインストール

覚書です。
ところどころ省いています。
実践環境で使う場合はご注意ください。

※本記事より新しい記事があります。
cmake-3.17.2をCentOS7にソースインストール

目的

libzip-1.5.2 をインストールしようとしたところ cmakeで次のエラーが発生しました。

CMake Error at CMakeLists.txt:4 (CMAKE_MINIMUM_REQUIRED):
  CMake 3.0.2 or higher is required.  You are running version 2.8.12.2

今までは yum で入れたものを使っていたのですが、CentOS6では 2.8.12.2 までのようです。

特徴

  • ソースコードからのインストール
  • 複数バージョンの共存

特定バージョンでの開発や動作確認など開発環境での用途を目的としています。

環境

実施日2019-6-21
サーバさくらのVPS 2G
OSCentOS 6.10
cat /etc/redhat-release
CentOS release 6.10 (Final)
rpm -qa | grep centos-release
centos-release-scl-7-4.el6.centos.noarch
centos-release-6-10.el6.centos.12.3.x86_64
centos-release-scl-rh-2-4.el6.centos.noarch

事前準備

gcc 9.1.0

CMakeを configure していると次のエラーが発生しました。

---------------------------------------------
CMake 3.14.5, Copyright 2000-2019 Kitware, Inc. and Contributors
Found GNU toolchain
C compiler on this system is: gcc
---------------------------------------------
Error when bootstrapping CMake:
Cannot find a C++ compiler that supports both C++11 and the specified C++ flags.
Please specify one using environment variable CXX.
The C++ flags are "".
They can be changed using the environment variable CXXFLAGS.
See cmake_bootstrap.log for compilers attempted.
---------------------------------------------

C++のコンパイラが古いので、C++11に対応したものが必要とのことです。

cmake 3.14.5

公式サイトからダウンロードして、/tmp  にアップロード

CMakeの公式サイトのダウンロードページに行くと最新版へのリンクがあります。

はじめに「Release Candidate」がありますがリリース候補版ではなく、少し下にスクロールしたところにある「Latest Release」を使います。

「cmake-3.14.5.tar.gz」をクリックしてダウンロードし、次の場所にアップロードします。

/tmp/cmake-3.14.5.tar.gz

インストール

ls -la /usr/local/src
ls -la /usr/local/lib

mkdir /usr/local/src/cmake-3.14.5

cp /tmp/cmake-3.14.5.tar.gz /usr/local/src/cmake-3.14.5/cmake-3.14.5.tar.gz

cd /usr/local/src/cmake-3.14.5

tar xvzf cmake-3.14.5.tar.gz

cd cmake-3.14.5

./configure --prefix=/usr/local/lib/cmake-3.14.5 CC="/usr/local/lib/gcc-9.1.0/bin/gcc" CXX="/usr/local/lib/gcc-9.1.0/bin/g++" CXXFLAGS="-std=c++11"

make

make install

/usr/local/lib/cmake-3.14.5/bin/cmake -version