Visual Studio 2022 を使用して C++ のプロジェクトを CMake で作成する方法を紹介しています。今回は find_package() によって 線型代数ライブラリ Eigen (https://eigen.tuxfamily.org/) を利用するやり方を報告します。他のライブラリを CMake でビルドするときに Eigen を検出させることができます。
環境
- 開発環境として、Visual Studio 2022(Community)の「C++デスクトップ環境」がインストールされていること。
- Git for Windows(https://gitforwindows.org/ )もしくは互換ソフトがインストールされ、コマンドラインから git が使用できること。1
- CMake (最新版を推奨)がインストールされ、コマンドラインから cmake が実行できること。2
- 環境変数の設定ができること。3
- コマンドラインでの作業には「Developer Command Prompt for VS 2022」を使用すること。4
ディレクトリ構成
この記事では、ダウンロードしたソース、コンパイルされたライブラリなどは c:\dev にいれることにします。これは任意の場所に変更することができます。
dev/
├── eigen3
├── include
├── eigen3
├── share
├── make
├── eigen-3.4.0
- ソースコードは c:\dev\make\eigen-3.4.0 にダウンロードします。
- c:\dev\eigen3 にビルドしたライブラリがインストールされます。
- インストール後、 c:\dev\make\eigen-3.4.0 は削除できます。
Eigen のインストール
ディレクトリ C:\dev\make
がなければ作成し、Developer Command Prompt for VS 2022 で以下を実行する。
> cd \dev\make
> git clone --depth 1 https://gitlab.com/libeigen/eigen -b 3.4.0 eigen-3.4.0
> cd eigen-3.4.0
> md build
> cd build
> cmake -DCMAKE_INSTALL_PREFIX="c:/dev/eigen3" ..
> cmake --build . --target install
- compiler does not support C++11 というメッセージが出るが、ドキュメントのサンプルコード(の出力予約)が減るだけなので気にしなくて良い。
- 先に Boost Library (1.53.0 以上)をインストールしておく(別記事)と Boost.Multiprecision が使用可能なことが表示される。
- Eigen はヘッダオンリーライブラリなので configuration (Release/Debug) の指定は必要ない。
- CUDA は指定していない。・nvcc with MS Visual Studio does not work https://eigen.tuxfamily.org/dox/TopicCUDA.html
環境変数の設定
次のうちいずれかを行う。上にある設定が優先される。
- 環境変数
Eigen3_DIR
にc:\dev\eigen3\share\eigen3\cmake
もしくはc:\dev
を設定する。 - 環境変数
CMAKE_PREFIX_PATH
にc:\dev
を設定する。 - 環境変数
Path
にc:\dev\bin
を追加する。
ライブラリの使用方法
簡単な例で使い方を説明する。作業用の適当なディレクトリを用意して、以下の内容で test.cpp
と CMakeLists.txt
を作成する。
#include <iostream>
#include <Eigen/Dense>
namespace ei = Eigen;
int main()
{
ei::Matrix3d A{{1,1,1}, {0,1,1}, {0,0,1}};
std::cout << A << std::endl;
std::cout << A*A << std::endl;
return 0;
}
cmake_minimum_required(VERSION 3.15)
project(test_eigen CXX)
set(CMAKE_CXX_STANDARD 14)
find_package(Eigen3 REQUIRED)
message(STATUS "Found Eigen-" ${EIGEN3_VERSION_STRING})
add_executable(test test.cpp)
target_link_libraries(test Eigen3::Eigen)
Developer Command Prompt から
> md build
> cd build
> cmake ..
とすることで Visual Studio のプロジェクトである build\test.proj
とソリューションである build\test_eigen.sln
が作成される。いずれかを Visual Studio で開くことで IDE を用いた開発ができる。あるいは IDE を使わずに、コマンドラインから
> cmake --build . --config Release
> Release\test.exe
としてコンパイル・実行することもできる。
-
Git from the command line and also from 3rd-party software にチェックを入れてインストールする。 ↩
-
https://cmake.org/ にある Latest Release の Windows x64 Installer を実行して 「Add CMake to the system PATH for all users」にチェックを入れてインストールする。 ↩
-
環境変数は、設定の「システム」>「バージョン情報」>「システムの詳細設定」から変更できます。
> set
で環境変数の一覧が見れるので、設定が反映されていない場合には一旦 Windows からサインアウトしてサインインし直してください。 ↩ -
スタートメニューの「Visual Studio 2022」フォルダ内にショートカットがあります。「ターミナル」の設定を変更し、「既定のプロファイル」に「Developer Command Prompt for VS 2022」を登録しておくと、エクスプローラーで作業するディレクトリを開き、コンテキストメニューから「ターミナルで開く」ことができて便利です。 ↩