web-dev-qa-db-ja.com

CMakeは再帰的にフォルダーをスキャンしましたか?

特定のディレクトリを再帰的にスキャンし、ソースファイルのリストを決定するようにCMakeを設定するにはどうすればよいですか?

私のプロジェクトは共有ライブラリです。私はこれに似たフォルダ構造を持っています:

/
  src/              # Source files in an arbitrary tree
  include/          # Headers, tree mirrors that of the src/ folder
  examples/         # Executable code examples that link against the library
  CMakeLists.txt

CMakeがsrcincludeを再帰的にスキャンし、ディレクトリ構造に関係なく、プロジェクトのソースファイルとヘッダーファイルのリストを決定するようにします。私も避けたい:

  • src/およびinclude/無限のディレクトリCMakeLists.txtファイル
  • フォルダー構造を変更するたびにスクリプトを変更および調整する必要がある

ただし、各例で独自のビルドスクリプトを使用することは問題ありません。

37
Matheus Moreira

CMakeは、再帰的なファイルグロビング用に次のコマンドを提供します。

file(GLOB_RECURSE variable [RELATIVE path] 
   [FOLLOW_SYMLINKS] [globbing expressions]...)

コマンドのドキュメント: http://www.cmake.org/cmake/help/v2.8.8/cmake.html#command:file

42
Andrey Kamaev