このリンクは、いくつかの例を提供します。
プロジェクト/インフラストラクチャをどのように見ているかという点では、物事をあまり混乱させないことが最善です。ここで、開始するためのいくつかのポイントを示します (願っています)。
- C++ では、モジュールはライブラリです (ネットワーク モジュールをライブラリとして参照してください)。
- ライブラリを含めるには、ライブラリをリンクし、ヘッダー ファイルを利用できるようにする必要があります 。
cmake では、これは 2 つのコマンドtarget_link_libraries
とinclude_directories
それぞれです。
それを念頭に置いて、プロジェクト構造は次のようになります
/Network/include (api here)
/Network/src
/sw1/src
/sw2/src
あなたのためのベースCmakeLists.txtファイルの例:(プロジェクトのルートディレクトリに配置)
cmake_minimum_required(VERSION 2.7) // your choice
project(myproject) // change name
add_subdirectory(Network)
add_subdirectory(sw1)
add_subdirectory(sw2)
ネットワークディレクトリには、これがあります
add_library(Network net1.cc net2.cc etc.)
sw1 ディレクトリ内
include_dirs(${MYPROJECT_SOURCE_DIR}/Network/include)
link_directories(${MYPROJECT_BINARY_DIR}/Network)
add_executable (sw1prog sw1.cc sw11.cc etc.)
target_link_libraries (sw1prog Network)
sw2 ディレクトリ内
include_dirs(${MYPROJECT_SOURCE_DIR}/Network/include)
link_directories(${MYPROJECT_BINARY_DIR}/Network)
add_executable (sw2prog sw2.cc sw21.cc etc.)
target_link_libraries (sw2prog Network)
これは、必要になる可能性のあるものの非常に単純化されたバージョンです。FindXXModule.cmake ファイルを作成する必要がなくなり、作成したライブラリを暗黙的に参照します。FindXXModule.cmake を作成したい場合は、これが最適なメカニズムだと思います。実際にライブラリをマシンにインストールし、他の人がそれを見つけられるようにするか、メカニズムを持っていることをお勧めします。複数のプロジェクトが他のライブラリにリンクするため。
これが少し役立つことを願っています。cmake サイトにはいくつかの例がありcmake --help
、あなたの友達であることを覚えておいてください。