cmakeとかg++とか
g++で外部のライブラリを使うときとかに指定しなきゃいけないもの。
・ソース(.c .cpp)
・ヘッダ(.h .hpp)の入っているディレクトリ(-Iで指定)
・ライブラリの入っているディレクトリ(-Lで指定)
・ライブラリ(.a .o等)(-lで指定)
・ヘッダファイル自体はソースコードの中で指定するものだからコンパイラオプションでは指定しない。
・また、#include "hoge.h" のように""で囲まれている場合は、最初にカレントディレクトリを探してくれるので、
この時対象のヘッダがカレントディレクトリある場合は「-I」指定はいらない。
・LD_LIBRARY_PATHにパスが通っているライブラリなら「-L」の指定はいらない。
・ちなみに実行時には.so等のダイナミックリンクライブラリがPATHに追加されている必要がある場合がある。
・pkg-configは、登録されているライブラリなら自動でこの「-I」「-L」「-l」指定をやってくれる。
`pkg-config --cflags hoge` `pkg-config --libs hoge`
cmakeのバージョン指定。
cmake_minimumrequired(VERSION 2.8.3)
add_definitionsでg++のオプションを追加できる。
add_definitions("-std=c++11")
CMAKE_BUILD_TYPEにsetでビルドタイプを指定できる。
set(CMAKE_BUILD_TYPE Release)
cmakeでpkg-configを使いたい時はfind_pkgで。
find_pkg(PkgConfig) pkg_config_modules(OPENCV REQUIRED opencv)
これで、ヘッダディレクトリはOPENCV_INCLUDE_DIRSの変数に、
ライブラリディレクトリはOPENCV_LIBRARY_DIRSの変数に、
ライブラリはOPENCV_LIBRARIESの変数に入る。
インクルードディレクトリの指定。
include_directories(/hoge/fuga)
ライブラリのディレクトリの指定。
link_directories(/hoge/piyo)
コンパイルするソースの指定。
add_executable(hoge hoge.cpp)
リンクするライブラリの指定。
target_link_libraries(hoge fugelib)
- CMakeを使ってみた(1)経緯と簡単なアプリケーション - wagavulin's blog
- CMakeを使ってみた(2)もう少しまともなプロジェクト - wagavulin's blog
- CMakeを使ってみた(3)ライブラリを作る - wagavulin's blog
- CMakeを使ってみた (4) ビルドオプション - wagavulin's blog
- CMakeを使ってみた (5) 設定ファイルを作る - wagavulin's blog
- CMakeを使ってみた (6) ソース外ビルド - wagavulin's blog
- CMakeを使ってみた (7) find_packageとpkg_check_modulesによるライブラリ探索 - wagavulin's blog
- CMake で pkg-config を使う - Qiita
- cmake チュートリアルを読む前に - Qiita
- CMakeで外部ライブラリとリンクさせたりするのどうすんのという話。 | | ねののお庭。
- cmakeゆとり用 - 藻ログ