installation

installation #

single_includeを使用する #

single_include/toml.hppは、toml11が持つ全ての機能を単一のファイルにまとめたシングルファイル・ヘッダオンリーライブラリです。

これをINCLUDE_PATHが通っている箇所にコピーして#include <toml.hpp>とするのが最も単純な使用方法です。

MITライセンスの許諾表示はコメントとtoml:license_notice()関数の両方に含まれます。 ソースコードを公開せずに再頒布する場合は、toml11のライセンスファイルをコピーして同梱するか、この関数を呼び出せるようにしておいてください。

toml11をクローンし、cmakeを使って使用する #

toml11git submoduleなどによって自身のレポジトリ下に配置した場合、cmakeを使用している場合はadd_subdirectory(toml11)のようにすることで使用可能になります。

add_subdirectory(toml11)
add_executable(main main.cpp)
target_link_libraries(main PUBLIC toml11::toml11)

toml11は自身がルートプロジェクトのときのみ、テストとインストールを行います。

cmakeを使用してインストールする #

toml11をクローンしたのち、cmakeを使ってインストールすることができます。

$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
$ cmake --install ./build/ --prefix=/opt/toml11

インストールの前にテストプログラムを実行する際は、最初に-DTOML11_BUILD_TESTS=ONを設定してください。

インストールが完了すれば、以下のようにして使用できます。

find_package(toml11)
add_executable(main main.cpp)
target_link_libraries(main PRIVATE toml11::toml11)

cmakeを使用してコンパイルし、静的ライブラリを作成する #

cmakeの実行時に-DTOML11_PRECOMPILE=ONを定義することで、toml11の関数のうちコンパイルできるものを先にコンパイルして、全体のコンパイル時間を短縮することができます。

$ cmake -B ./build/ -DTOML11_PRECOMPILE=ON

ライブラリをリンクする場合は、CMakeで

target_link_libraries(your_target PUBLIC toml11::toml11)

とするか、ヘッダ内の関数のinline化を避けるためにコンパイラに-DTOML11_COMPILE_SOURCESを渡してください。

ただし、toml11は複数のC++バージョンに対応するため、__cplusplusの値などによって型を切り替えることがあります。 そのため、ビルドした際のバージョンと使用時のバージョンが異なる場合、リンクに失敗する可能性があります。 問題が生じた場合はCMAKE_CXX_STANDARDによって必要なバージョンを設定してコンパイルしてください。 それが難しい場合は、通常通りヘッダオンリーライブラリとして使用してください。

find_package(toml11)によってTOML11_INCLUDE_DIRが定義されます。 コンパイル済みライブラリとしてインストールした場合でも、 TOML11_INCLUDE_DIRinclude_directories に追加した上で target_link_libraries を 使用しないようにすれば、ヘッダオンリーライブラリとして使用可能です。

find_package(toml11)
add_executable(main main.cpp)
# インクルードのみ可能にし、リンクを行わない
target_include_directories(main PRIVATE ${TOML11_INCLUDE_DIR})

examplesをコンパイルする #

-DTOML11_BUILD_EXAMPLES=ONとすることで、examples/をコンパイルできます。

$ cmake -B ./build/ -DTOML11_BUILD_EXAMPLES=ON
$ cmake --build ./build/

examplesの実行バイナリはexamples/に生成されます。

テストを実行する #

テストをビルドするためには、-DTOML11_BUILD_TESTS=ONとします。

$ git submodule update --init --recursive
$ cmake -B ./build/ -DTOML11_BUILD_TESTS=ON
$ cmake --build ./build/
$ ctest --test_dir ./build/

toml-lang/toml-testsを実行するには、-DTOML11_BUILD_TOML_TESTS=ONとします。 すると、tests/toml11_decodertoml11_encoderがビルドされます。

$ git submodule update --init --recursive
$ cmake -B ./build/ -DTOML11_BUILD_TOML_TESTS=ON
$ cmake --build ./build/
$ ctest --test_dir ./build/