2011-12-26 2 views
6

をインストールするまで、カスタムターゲットを作る延期します。私が望むのは、CMakeがビルド時ではなく、make installが発行されたときにのみ、このコマンドを実行することです。は、私は私のプロジェクトでは、このような何かを持っている

キーワードをすべて削除すると、ターゲット全体がデフォルトで作成されていないため、somefileは生成されず、make installは失敗します。

答えて

8

解決策は、make installコマンドで副作用としてmake tgtを呼び出すことです。これはinstallコマンドのCODE署名を使用して行うことができます。

add_custom_command(OUTPUT somefile) 
add_custom_target(tgt DEPENDS somefile) 

install(CODE "execute_process(COMMAND \"${CMAKE_COMMAND}\" --build \"${CMAKE_CURRENT_BINARY_DIR}\" --target tgt)") 
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/somefile DESTINATION somedir) 

execute_processsomefileがインストールされる前に、ターゲットtgtを構築するためにcmakeのを起動します。

関連する問題