2016-05-23 15 views
0

トップレベルのカスタムターゲットが1つ、ネストされたサブモジュールが必要です。このサブモジュールには、custom_commandを追加/バインディングすることで既存のターゲットを拡張できます。今のところ私は問題に直面しています:add_custom_command(TARGET target_name ...)がターゲットが定義されているファイル(トップレベルのCMakeLists.txtにターゲットが定義されている)で使われていない場合、このcustom_commandは単純に無視されます。cmake bind既存のトップレベルのターゲットへのカスタムコマンドが失敗する

詳細:

1)は、他のCMakeLists.txt(モジュールがあるサブディレクトリ "サブ" の最上位CMakelists.txt

cmake_minimum_required(VERSION 2.8) 

add_custom_target(custom_tg 
COMMAND ls > custom_target.txt 
) 

add_custom_command(TARGET custom_tg 
COMMAND ls > custom_command1.txt 
) 

add_subdirectory(sub) 

2)上に作成custom_target私が望んでいたのは、カスタムコマンドで存在するターゲットを拡張することができるということです。

add_custom_command(TARGET custom_tg 
COMMAND ls > custom_command2.txt 
) 

3)私は、ディレクトリを構築し、出力ファイルが custom_command1.txtとcustom_target.txt ですが、ないcustom_command2.txtがなく、かつ

cmake .. && make custom_tg 

を実行して作成しますそれは実際に私の問題です。私はビルド/ CMakeFiles/custom_tg.dir/build.makeに見れば

は、私はそこに custom_command2.txt については言及を見ていません。ここにはbuild.makeファイルの内容があります:http://pastebin.com/zVVS4sYLです。

実際に私はcustom_command2.txtについての言及をCmakeによって生成されたファイルのツリー内に見つけることができません。これは私には奇妙に見えます。

お手数をお待ちしております。

答えて

0

これは、通常、ターゲット間の依存関係を構築することで解決されます。あなたのサブディレクトリの1つにあるコマンドごとに、まず「ローカル」コマンド/ターゲットを追加してから、それをトップレベルのものに依存させます。これにより、cmakeはすべての 'ローカル'ターゲットを実行してからトップレベルのターゲットを実行します。

+0

私はそれを評価しようとしましたが、私はメッセージを受け取りました。 "フィードバックをいただきありがとうございます。評判が15点に達すると、あなたの投票は公開されたポストスコアを変更します" –

+0

https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-workをご覧ください – renemilk

関連する問題