Quitada ブログ HAX

Hatena Blog でも Quitada ブログ

CLion を使いこなすには CMake を多少勉強しないとねという話

Java で何か開発するときには、JetBrains 社の IntelliJ IDEA 使っているのですが、死語賭でたまに C++ で何か作ることもありまして、以前は Eclipse CDT 使っていたんですけど、JetBrains が C/C++ IDE として CLion という IDE をリリースしたんでそちらに乗り換えました。

同じ会社がだしているので、CLion は IntelliJ IDEA と同じようなルックアンドフィールで、いわば "IntelliC" といったところで、IntelliJ IDEA は比較的使い慣れている私としては、非常にとっつきやすいです。

IDE 使って C や C++ で何か作ってビルドして動作確認する際、悩ましいのはコンパイラー引数とか、リンカースイッチをどう設定するかだと思ってます。Visual StudioEclipse CDT だと、コンパイラー引数とリンカースイッチ設定項目一覧みたいな設定ウィンドウをだして、一つ一つばらばらと色々なところに設定していきますが、ま、お世辞にも使いやすいとはいえないですね。むしろ、コマンドラインで引数やスイッチを羅列した方がよっぽど設定しやすい。

と、CLion では私の気持ちを汲んでくれた(?)のか知りませんが、コンパイラー引数とリンカースイッチをばらばらと所定の箇所に無駄な GUI で設定することなく、バックエンドのビルドシステムである CMake の CMakeLists.txt ファイルそのまま編集して設定するという極めてシンプルかつ、設定内容が 1 つの場所に集約されていて設定しやすくなってます。他方、CMake 自体の設定項目を知っている必要があり、本ブログエントリーも CMake を多少勉強しないとね、ということで…。

ではさて、死語賭でよく使う GemFire の Native Client という C++ モジュールを使う C++ アプリケーションのビルド・テスト環境を CLion 上で作ってみたので、メモ書きします。以下のドキュメントの設定を CLion でやってみるというイメージです。

Developing C++ Programs on Linux

環境変数の設定

CLion のメニューから、File > Settings...(Ctrl + Alt + s でも良いです)とたどりプロジェクト設定ウィンドウを開きます。さらにそのウィンドウの左ペインで、Build, Execution, Development > CMake とたどると、右ペインにビルド・実行・開発関連設定画面が表示されるので、Environment の項目の右端にある [...] をクリックします。そうすると、環境変数設定画面が開くので、右上の [+] を押して項目追加、以下のように GFCPP とか設定して、[OK] を押します。

なお、こちらによると現状の CLion(quitada は、2016.3.2 で動作確認)では設定済みの環境変数を参照するため以下のような記述はできないようです。既存環境変数に追加したい場合だけでも、既存の設定内容と追加したい内容と記述する必要があるみたいです。

${GFCPP}/lib:${LD_LIBRARY_PATH}

むむぅ、これは何とかならないかな…。

コンパイラー引数・リンカースイッチの設定

プロジェクトを作成すると、CMakeLists.txt が自動生成されるのでそちらを CLion 上で開いて直接テキスト編集します。C++コンパイラー引数設定のため、以下の感じのを追加します。

set(CMAKE_CXX_FLAGS "-D_REENTRANT -m64 -I$ENV{GFCPP}/include")

リンカースイッチは以下の感じのを追加します。

set(CMAKE_EXE_LINKER_FLAGS "-Wl,-rpath,$ENV{GFCPP}/lib -L$ENV{GFCPP}/lib -lgfcppcache")

ポイントは、CMakeLists.txt では環境変数が参照できて、$ENV{[環境変数名]} と記述します(ここでは、前手順で CLion 上で設定した環境変数 GCPP の内容を参照してます)。