2011-11-08 47 views
8

私が古典的なgnuを使うときは、デバイスを(埋め込みデバイスの場合)フラッシュするようなポストビルドアクションや他の類似したアクションを入れてください。実際の点滅は、通常、小さなsctiptやいくつかのコマンドの後ろに隠されています。cmake:ちょうどシェルスクリプトを実行するadd_custom_commandを追加するには?

それから私はので、私は最初のコードをビルドし、それをターゲットに終わる

make flash 

のようなものを入力することができます。 古典的なMakefileはそれのようなものかもしれない:

.PHONY: flash 
flash: main.bin 
    scripts/do_flash.pl main.bin 

をしかし、どのように、私はポストのこの種は、cmakeのビルドにアクションを構築する追加できますか?

シェルスクリプトを実行するだけの「カスタムコマンド」を追加するにはどうすればよいですか? add_custom_commandについて

この質問交渉:それは、 近いですが、add_custom_commandが動作するように、「出力ファイル」を必要とするように見えるように 質問cmake add custom commandを感じています。 しかし、この場合、発生していない何かが発生しています。

このようなカスタムアクションを追加するにはCMakeLists.txtに何を入れますか?

/おかげで参考のために


答えて

11

はこれを試してみてください。このトピックに関するcmakeのドキュメントへのリンク:

add_custom_target(flash 
    COMMAND ${PERL_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/do_flash.pl ${MAIN_BIN_FILE} 
    DEPENDS ${MAIN_BIN_FILE} 
) 
+0

+1こと素敵です:) – Johan

+1

btw、$ {MAIN_BIN_FILE}がmain.binに変換されるべきことをどうお知りしますか? cmakeの魔法がありますか、あるいはMAIN_BIN_FILEと呼ばれるvarialbeを定義し、main.binという値を与えますか? – Johan

+1

あなた自身で定義する必要があります。私はadd_custom_command(OUTPUT $ {MAIN_BIN_FILE} ...)によってmain.binを生成すると仮定しました。そうでない場合は、定数文字列で置き換えることができます。その場合は、add_custom_targetからDEPENDS節を削除することもできます。 – arrowd

関連する問題