、、、およびライブラリが通常ntl
、デフォルトパスのどこかにインストールされている場合(または)、次のように簡単に実行できます。m
gmp
/usr/
/usr/local/
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(Test)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
add_executable(test main.cc)
target_link_libraries(test ntl m gmp)
これはおそらく元のg++コマンドに最も近いものですが、それほど堅牢ではありません。ライブラリが見つからない場合は、リンクを試みるまでそのライブラリについて知ることはできません。構成時に(つまり、CMakeの実行中に)失敗したい場合find_library
は、必要な各ライブラリの呼び出しを追加できます。
find_library(NTL_LIB ntl)
if(NOT NTL_LIB)
message(FATAL_ERROR "ntl library not found. Rerun cmake with -DCMAKE_PREFIX_PATH=\"<path to lib1>;<path to lib2>\"")
endif()
target_link_libraries
次に、コマンドを次のように変更する必要があります。
target_link_libraries(test ${NTL_LIB} ${M_LIB} ${GMP_LIB})
次にfind_file
、コマンドを介して追加する適切なパスを見つけるために、各libのヘッダーファイルの1つに対しても実行する必要があります(これはg ++include_directories
に変換されます)。-I
余分なCXX_FLAGS引数を引用符で囲むことが重要です。そうしないと、CMakeはそれらをリスト内の個別の値のように扱い、フラグの間にセミコロンを挿入します。
、などの詳細についてfind_library
は、以下find_file
を実行してください。
cmake --help-command find_library
cmake --help-command find_file