2

私はcmakeにいくつかのファイルをダウンロードさせようとしています。「生成」ボタンが押されたときに、これを一度行うことは可能ですか? 構成ボタンが押されるたび、またはプロジェクトがビルドされるたびに実行するように設定することしかできません。

4

2 に答える 2

6

CMakeLists は構成時に処理されるため、生成時に処理を行うことはできません。ただし、キャッシュ変数を設定し、それをフラグとして使用して、ダウンロードを行うかどうかを決定することができます。何かのようなもの:

if(NOT DOWNLOAD_HAPPENED)
  execute_process( ... do the downloading stuff ... )
  set(DOWNLOAD_HAPPENED TRUE CACHE BOOL "Has the download happened?" FORCE)
endif()

これにより、最初の構成時にダウンロードが実行され、(ユーザーが DOWNLOAD_HAPPENED 変数を手動でリセットしない限り) 二度と実行されません。ただし、最後の構成でダウンロードが本当に必要な場合は、残念ながら運が悪いです。

于 2012-12-04T16:12:25.980 に答える
3

このようなものが役立つはずです:

add_custom_command(
   OUTPUT myfile.txt
   COMMAND wget http://myurl.com/myfile.txt
   )

編集1

メイン コマンドの依存関係として作成する必要があります。

add_dependencies(<myprogram> wget)
于 2012-12-04T15:21:42.917 に答える