0

私たちのシステムは、いくつかの xml ファイルを使用してコードを生成します。そこで、これらのファイルをスキャンして解析し、必要に応じて生成するカスタム コマンドを作成しました。これは私がしたことです:

file(GLOB BEAN_XML_FILES "../../*.xml")

add_custom_command(TARGET communication PRE_BUILD
                   COMMAND python
                   ARGS bean_maker.py --input-directory ${SOURCE_DIR}/docs/beans --output-directory ${SOURCE_DIR}/beans
                   WORKING_DIRECTORY ${SOURCE_DIR}/tools/bean_maker
                   COMMENT "Running bean maker..."
                   DEPENDS ${BEAN_XML_FILES})

問題は、フォルダー内のいくつかの xml を変更した場合でも、cmake を実行したときにのみ add_custom_command が実行されることです。

ファイルに変更が加えられたときにこれを実行するにはどうすればよいですか?

4

2 に答える 2

0

問題は、ターゲットをコンパイルする必要がある場合にのみカスタム コマンドが実行されることです。これらのxmlファイルの1つを変更するたびに、ターゲットを再コンパイルする必要があることをCMakeで作成する必要があります。

次の 2 つのオプションがあります。

  1. 常に変化するデカダンスを設定します(システム時間、インクリメント変数)
  2. すべての xml ファイルの最新の変更時刻をビルド ディレクトリ内のファイルに書き出す 2 番目のカスタム コマンドを作成します。そのファイルに依存すると、xml ファイルが変更された後にのみターゲットが再コンパイルされます。
于 2010-11-16T19:16:41.337 に答える
0

add_custom_commandカスタム コマンドを追加して出力ファイルを生成するには、署名を使用します。

add_custom_command(OUTPUT ${GENERATED_SOURCE_FILES}
                   COMMAND command1 [ARGS] [args1...]
                   DEPENDS ${BEAN_XML_FILES})

ビルド時に、生成されたファイルが依存するファイルよりも古い場合、コマンドが実行されます。

于 2010-11-17T02:16:01.293 に答える