cmake パッケージなしのシンプルなアプローチ


実行可能ファイル(エディタ)をビルドし、ライブラリ(ハイライト)をリンクする例プロジェクトの構造は単純ですが、マスターCMakeListsと各サブプロジェクトのディレクトリが必要です。

CMakeLists.txt
editor/
    CMakeLists.txt
    src/
        editor.cpp
highlight/
    CMakeLists.txt
    include/
        highlight.h
    src/
        highlight.cpp

マスターCMakeLists.txtには、各サブプロジェクトのグローバル定義とadd_subdirectory呼び出しが含まれています。

cmake_minimum_required(VERSION 3.0)
project(Example)

add_subdirectory(highlight)
add_subdirectory(editor)

ライブラリのCMakeLists.txtはsourcesとincludeディレクトリを割り当てます。 include_directories() target_include_directories()代わりにtarget_include_directories()を使用すると、インクルードinclude_directories()がライブラリユーザに伝播されます。

cmake_minimum_required(VERSION 3.0)
project(highlight)

add_library(${PROJECT_NAME} src/highlight.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)

アプリケーションのCMakeLists.txtは、ソースを割り当て、ハイライトライブラリをリンクします。 hightlighterのバイナリとインクルードへのパスは、cmakeによって自動的に処理されます:

cmake_minimum_required(VERSION 3.0)
project(editor)

add_executable(${PROJECT_NAME} src/editor.cpp)
target_link_libraries(${PROJECT_NAME} PUBLIC highlight)