ライブラリ用の CMakeLists.txt ファイルがあります。それはかなり基本的です:
set(LIB_FILES source/first.cpp)
add_library(first ${LIB_FILES})
最終的にライブラリにソース ファイルを追加する予定なので、ファイルをリストに入れます。問題は、すべてのファイルがsource
ディレクトリにあることです。そして、私はそれを常に繰り返さなければならないことを望んでいません。
GLOB
新しいファイルを追加するときに CMakeLists.txt ファイルを編集する必要があるため、パターン マッチング ソリューションも使用したくありません。そうすれば、私のビルドはビルド ソリューションを再ビルドし、新しいファイルが正しく表示されます (私が理解しているように、私はまだ CMake を初めて使用します)。
source
リストを作成するためだけに、ディレクトリ自体にCMakeLists.txt ファイルを追加しようとしましたLIB_FILES
。それはうまくいきませんでした。CMake の変数はファイル スコープです。また、( を使用して) スコープを解除した場合でも、PARENT_SCOPE
各ファイルにプレフィックスとしてディレクトリを付ける必要がありました。それで何も得られませんでした。
source
ディレクトリにすべてのビルドファイルが生成されるため、実際のライブラリ定義をディレクトリに配置したくありませんsource
。そして、私はそれを望んでいません。また、ディレクトリ内またはディレクトリの下にないヘッダーを含める必要がありますsource
。
私のディレクトリ構造は次のようになります。
libroot (where the project build files should go)
\-source (where the source code is)
\-include (where the headers that the user of the library includes go)
source
では、すべてのソース ファイルがディレクトリから取得されることを CMake に伝えるにはどうすればよいのでしょうか。