1. g++
g++ hello.cpp -o hello

2. cmake
cmake_minimum_required(VERSION 2.8)
add_executable(hello hello.cpp)

3. include, lib(g++)
-Iでインクルードパスを指定(例:-I/usr/local/include)
-Lでライブラリパスを指定(例:-L/usr/local/lib)
-lでライブラリファイルを指定(例:-lopencv_core)

-lopencv_coreは、opencv_core.soをライブラリファイルとして指定する。
ライブラリ本体はopencv_core.so.バージョン番号であり、.soファイルは本体へのリンク。

4. pkg-config
ライブラリの探索。
OpenCVやPCLなどの特定のライブラリで利用可能。
pkg-config --cflags opencv
 出力:-I/usr/local/include/opencv -I/usr/local/include
pkg-config --libs opencv
 出力:-L/usr/local/lib -lopencv_calib3d -lopencv_contrib ...

g++ hello.cpp -o hello 'pkg-config --cflags --libs opencv'
 というように利用できる。

5. find_package
cmakeでのライブラリ探索。内部でpkg-configを利用。
find_package(OpenCV)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(hello hello.cpp)
target_link_libraries(hello ${OpenCV_LIBS})

6. make install
Makefileの中にinstallに対する処理が書かれている。
実態はincludeやlibファイルのコピー。