2017-01-17 4 views
1

私はFILE (GLOB "*.cpp")を見ていますか?検索の作業ディレクトリは何ですか?現在のソースディレクトリですか?(これはどこにも書かれていませんそれ)FILE (COPYためであるCMakeの `FILE(GLOB`)はどこですか?

答えて

0

検索は、あなたのCMakeLists.txtのディレクトリ、つまり、現在のソースディレクトリに発生し

あなたはこれを達成するために欲しいものに関する側の発言として、私はfollowingを強調します:。。

注:GLOBを使用して、ソースツリーのソースファイルのリスト を収集することは推奨しません。ソース が追加または削除されたときにCMakeLists.txtファイルが変更されなかった場合、生成されたビルドシステムは、CMakeに再生成を依頼する の時期を知ることができません。

+0

ありがとう!そして、私はその問題を認識しています。これはテストファイル用ですが、私はそれが合理的な妥協であると思っています(テストが省略されてもそれほど重要ではありません)。 – Timmmm

2

FILE(GLOB globbing expression)は、グロブリング式のパスを受け入れます。したがって、式に任意のパスを含めることができます。次の例では、サブフォルダTESTDATAに拡張DATを持つすべてのファイルを検索します:

注:CMAKE_CURRENT_SOURCE_DIRのような定義済みのパス変数の使用を相対パスについての思考を回避し、CMakeLists.txtは、より多くの再利用可能とプラットフォームに依存しました。

悪い

file(GLOB generatedSources "../build-arm/autocode/*.c")

グッド: file(GLOB generatedSources "${PROJECT_BINARY_DIR}/autocode/*.c")

+0

本当ですか!他の答えでこれを言い忘れた。 – oLen

+0

あなたは巧みにあなたの答えを混乱させました!私の質問はGLOBが '$ {CMAKE_CURRENT_SOURCE_DIR} 'に相対的であるかどうかということだったのですが、なぜ' file(GLOBファイル "testdata/*。dat") 'をしなかったのですか? – Timmmm

+1

$ {CMAKE_CURRENT_SOURCE_DIR}を使用することをお勧めします。ハードコードされたパスの使用や、現在のフォルダーや現在のフォルダーの表示の不確実性を避けるためです。 –

関連する問題