私はマルチプラットフォームのcmakeプロジェクトに変換する必要があるプロジェクトのかなり大きなファイル構造を持っています。これで、cmakeは、単一のcppファイルを実行可能ファイルに個別に追加する必要があることを確認します。しかし、これを自動化するスクリプトはありますか?それはファイル構造をスヌープし、すべてのソースファイルを自動的に追加するだけですか?プロジェクトはおそらくもっと多くのソースファイルを取得するので、私はおそらく手動で1つ1つ追加することはできません。CMakeは、ディレクトリのすべてのサブディレクトリ内のすべてのソースファイルを再帰的に実行可能ファイルに追加しますか?
0
A
答えて
0
あなたは再帰的のようなあなたのCMakeLists.txt
つまり何かに含まれるファイルに書き込み、ソースファイルをスキャンするためにはglobしcmake -P
スクリプトでexecute_process()
を使用することができます。
「CMakeLists.txt」:
execute_process(COMMAND ${CMAKE_COMMAND}
-D "RDIR=${CMAKE_CURRENT_SOURCE_DIR}"
-P "scansources.cmake"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
include("sources.cmake")
add_executable(myexe ${sources})
"scansources.cmake"( "sources.cmake" を生成する):
file(GLOB_RECURSE sourcelist
*.c
*.cc
*.cpp
*.cxx)
string(REGEX REPLACE "${RDIR}/" "" relative_sources "${sourcelist}")
string(REPLACE ";" "\n" sources_string "${relative_sources}")
set(sources_string "set(sources\n${sources_string})")
file(WRITE sources.cmake "${sources_string}")
なぜこのような理由設定時にexecute_process()
が発生するためです。
他のツールやIDEを使用してsources.cmake
を生成することもできますが、scansources.cmake
またはexecute_process()
は必要ありません。
+0
私は私のプログラムをコンパイルし、その後にmake -j4をつけて、ファイルを再スキャンするたびにcmakeを実行するスクリプトを基本的に設定します。私は、cmakeが自分でcmakeを再度実行しても自動的に検索しないことを知っています。ソースファイルをグロビングしていますが、これは実際にこれを解決するかもしれません。ありがとう – user1510024
関連する問題
- 1. すべてのPHPファイルを実行可能にする(再帰的に)
- 2. 内部に1つのファイルしかない再帰的にすべてのサブディレクトリ
- 3. PHP:ディレクトリおよびすべてのサブディレクトリ内のファイル名から括弧を再帰的に削除します。
- 4. excelマクロをフォルダ内のすべてのディレクトリで再帰的に実行する
- 5. アルターバッチスクリプトを再帰的にすべてのファイルタイプを変更するには、すべてのサブディレクトリ内の
- 6. ディレクトリ内のすべての.rarファイルを再帰的にリストする方法
- 7. ディレクトリ内のすべてのファイルを再帰的に取得するNodejS
- 8. PHPでディレクトリ内のすべてのJavaScriptファイルのスクリプトタグを再帰的に生成
- 9. BashまたはPython:すべての.texファイルに文字列を再帰的に追加して追加する
- 10. ディレクトリ内のすべてのファイルをパイプで再帰的にリスト表示
- 11. Pythonで特定のファイルを見つけるまで、すべてのディレクトリを再帰的に実行します
- 12. Bashは、サブディレクトリを持つディレクトリ内のすべての.jpgファイルに対してスクリプトを実行します。
- 13. Apache - サブディレクトリとすべての子コンテンツを再帰的にリダイレクト
- 14. すべてのディレクトリを再帰的にリストする方法は?
- 15. フォルダ内のすべての.phpファイルを再帰的に検索
- 16. シェルスクリプト-cdディレクトリのすべてのサブディレクトリで、ファイルに対してコマンドを実行
- 17. 再帰的にカウントし、作業ディレクトリのすべてのサブディレクトリの数を表示するには?
- 18. ディレクトリとサブディレクトリ内のすべてのファイルのすべてのEOL(dos-> unix)をdos2unixなしで再帰的に変換する
- 19. Rubyでディレクトリ内のすべてのファイルを再帰的に要求することはできますか?
- 20. ディレクトリとすべてのサブディレクトリ内のすべてのXMLファイルを解析する
- 21. メイクファイルのフォルダ内のすべてのファイルを再帰的にインクルードするには
- 22. すべての.priファイルをディレクトリ内に追加する方法
- 23. rubyを使ってディレクトリ内のファイルを再帰的に実行する
- 24. CMake:サブディレクトリから別のサブディレクトリにある実行可能ファイルへのスタティックライブラリのリンク
- 25. 一覧隠しフォルダ内のファイルを除き、指定されたディレクトリ内を再帰的にすべてのファイル
- 26. javaでは、すべてのファイルを再帰的に表示します。 1つのサブディレクトリをスキップする
- 27. CMakeでファイルを生成して実行可能ファイルとして追加する
- 28. この再帰コピー機能は、すべてのファイルを正しいディレクトリの上にあるすべてのディレクトリにコピーするのはなぜですか?
- 29. サブディレクトリ内の.gitディレクトリをgitに追加することは可能ですか?
- 30. Bash:サブディレクトリではないディレクトリ内のすべてのファイル
'file(GLOB ...)'はあなたの友人です。 – arrowd
ありがとう、私はそれを調べるでしょう – user1510024
彼らは明示的にソースファイルを検索するために使用すべきではないことを彼らはウィキに明記します。なぜなら、cmakeファイルが変更されていなければ、cmakeはmakefileを再構築しないからです。しかし、私はおそらくそれをとにかく行い、プロジェクトにファイルを追加するたびにcmakeに再構築させるシェルスクリプトを作成します。あなたの助けをありがとう – user1510024