2012-03-16 33 views
34

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 

私は避けたい:

  • スクリプトを変更し、適応するすべての時間を持つ無限のCMakeLists.txtファイル
  • src/include/ディレクトリを汚染する私はフォルダ構造を変更する

それぞれの例で独自のビルドスクリプトを使用することはできますが、しかしながら。

答えて

38

cmakeのはglobing再帰的なファイルのために次のコマンドを提供します。

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

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

+11

注この方法を使用する場合は、再度追加するたびにcmakeのを再生成または削除する必要がありますことをソースファイル。 – mrgrieves

+6

@mrgrievesにはより効率的な方法がありますか?もしそうなら、この質問に別の答えを加えることを検討してください。 –

関連する問題