CLionを使うときのCMakeList.txtの書き方,フォルダ分けの方法
備忘録
CLionを使うときにおそらくぶつかる壁がCMakeだと思う. Makefileは書けるけどCMakeList.txtなんて知らないよ!
こんな感じになったので,調べて,書きました.
フォルダ分けについて
Clionはプロジェクト単位でソースを管理しています.
一つのディレクトリに全てのソースを置いてもいいのですが,後々管理が大変になるので,実行単位ごと(学生なら課題ごとも可)でディレクトリを分けましょう.ディレクトリで分けることでbuildも簡単になりますし,見通しも良くなります.
実際の作業
まずサブディレクトリを作りましょう.
サブディレクトリを作ってもツリービューの名前が灰色のままだと思います.そこで次にメインのCMakeList.txtにこのサブディレクトリを認識するよう記述しましょう.
cmake_minimum_required(VERSION 3.7)
project(untitled)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp sample.cpp sample.h)
add_executable(untitled ${SOURCE_FILES})
add_subdirectory(ex1)
このadd subdirectory(…)でサブディレクトリを追加できます.今回はディレクトリ名がex1のものです.
ここで終わればよいのですが,まだもう少し.
これで保存しようとするとエラーダイアログが出現します.どうやらサブディレクトリにもCmakeList.txtが必要なようです.書きましょう.
cmake_minimum_required(VERSION 3.7)
project(ex1)
set(SOURCE_FILES ex1.cpp)
add_executable(${PROJECT_NAME} ${SOURCE_FILES})
書きました.
ソースファイルはいちいちこのように書かないとCLionが認識できないようです.
マクロを使ってうまいことやれたらいいのになぁ.
追記 OpenCVをCLionで使うときの設定の注意点
OpenCVを使うときはライブラリを追加して上げる必要があります.
MakeList.txtに記述しましょう.
追加するときに使うコマンドは
find_package( OpenCV REQUIRED )
と
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
です.(Using OpenCV with gcc and CMake — OpenCV 2.4.13.2 documentation参照)
ですが,場所に注意する必要があります.
上のfind_packageは(多分)
add_executable(untitled ${SOURCE_FILES})
の前に,下の
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
は必ず
add_executable(untitled ${SOURCE_FILES})
の下に配置する必要があるのです.
ここで地味につまりました.
ちなみに
include_directories(${OpenCV_INCLUDE_DIRS}) をterget_link_librariesの前に入れるべきかもしれません.
正直CLionがMakefile対応してたらもっと多くの人が使う気がする…