2017-06-12 15 views
1

私は、複数のサブディレクトリを持つ大きなプロジェクトを持っています。親ディレクトリには、同じ親ディレクトリにある他のcmakeファイルで定義されている関数を呼び出すCMakeLists.txtファイルがあります。私はいくつかのターゲット "実行"を含むサブディレクトリの1つにカスタムのMakefileを持っています。私がcmakeを親ディレクトリから呼び出すとき、makefileのサブディレクトリにある "run"ターゲットを実行します。私はこれをどのようにするべきですか? add_custom_targetとadd_custom_commandの使用を提案している人もいると思いますが、これらのコマンドをどのように適用してこのタスクを達成するかについてはまだ混乱しています。cmakeファイルの既存のmakeコマンドを呼び出す

答えて

3

サブディレクトリにあるMakefileによって生成され、これらのファイルに依存したい、add_custom_commandを使用しているファイル(複数可)、あなたが知っている場合:

add_custom_command(OUTPUT <output-file> 
        COMMAND make run 
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/<subdir> 
) 

これはあなたのCMakeLists.txtが依存ターゲットを、持っていることを前提としていまたは与えられたファイルを使用します。それ以外の場合は

、あなたがメイクファイルによって生成されたファイルは気にしない場合は、add_custom_targetを使用します。

add_custom_target(<target_name> COMMAND make run 
        WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/<subdir> 
) 

両方のケースでWORKING_DIRECTORYが実行したコマンドのため現在あるべきディレクトリを指定します。

あなたは(第2の場合)、ターゲットがデフォルトで実行したい場合は

COMMANDALLオプションを追加します。

関連する問題