CMakeLists.txtの最小例
CMakeLists.txt
project(test)
cmake_minimum_required(VERSION 3.10)
find_package(Eigen3 REQUIRED)
add_executable(hoge a.cpp)
include_directories(${EIGEN3_INCLUDE_DIRS})
a.cpp
# include <Eigen/Core>
# include <iostream>
int main() {
const Eigen::MatrixXd eye = Eigen::MatrixXd::Zero(2, 4);
std::cout << eye << std::endl;
}
cmake --help-command-list
すると,CMakeLists.txt内で使うコマンドの一覧が見れる.
out-of-source buildをcd
せずに行う
cmake -Bbuild -H.
make -C build
find_package(XXX)
のXXX
に書くべき文言を思い出したい場合
まずは,cmake
がデフォルトで持っているfind_package
の対象を探してみる.
cmake --help-module-list
これは/usr/share/cmake-3.10/Modules
を見ているっぽい.
自分でインストールしたパッケージのfind_package
は
pkg-config --list-all
で探せる.
pkg-config
のHPは https://www.freedesktop.org/wiki/Software/pkg-config/ みたい.
探索PATHは
- /usr/share/pkgconfig/
- /usr/lib/x86_64-linux-gnu/pkgconfig
とかみたい.
pkg-config
を使って見つける場合
CMakeLists.txt
project(test)
cmake_minimum_required(VERSION 3.10)
find_package(PkgConfig)
pkg_check_modules(EIGEN3 eigen3)
add_executable(hoge a.cpp)
include_directories(${EIGEN3_INCLUDE_DIRS})
Eigenは
- /usr/lib/cmake/eigen3/Eigen3Config.cmake
- /usr/share/pkgconfig/eigen3.pc
2つの探し方用のファイルがあるので,一番最初のようにfind_package
でも探せるし,pkg_check_modules
でも探せる.