2016-09-26 3 views
0

私はUbuntu Linuxを使用しています。ビルド時にCMakeからcscopeを実行する

プロジェクトディレクトリから「make」を実行すると、次のcscopeコマンドを実行しようとしていました。したがって、プロジェクトを作成するときにcscopeを再コンパイルし、更新された名前情報を取得します。私の研究や読書のビット毎の

cscope -b -q -U -R

、私はあなたがCMakeLists.txtでadd_custom_command機能を使って、「作る」かコマンドを実行するために、CMakeのを得ることができる必要があります。

しかし、多くの試みとそのバリエーションは成功していません。 add_custom_commandでこれを実行してもよろしいですか?

は、単にこれを行うことは動作していないよう:

add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cscope.in.out ${CMAKE_CURRENT_BINARY_DIR}/cscope.out ${CMAKE_CURRENT_BINARY_DIR}/cscope.po.out COMMAND cscope -b -q -U -R)

私もadd_custom_commandのTARGETのオーバーロードを使用してみました、そしてALLまたはメインのいずれかに依存してカスタムターゲットを作ってきましたプロジェクトの出力ファイルですが、それでも何もしません。

プロジェクトをビルドした後、理想的にはこれが実行されます。私が間違っていることを教えてもらえますか、これを行うにはどうしたらいいですか?

+1

'add_custom_command'は、いくつかの** target **がコマンドが生成するファイルに依存するまで役に立たない。 – Tsyvarev

+0

最新の['add_custom_command'ドキュメント](https://cmake.org/cmake/help/latest/command/add_custom_command.html)を実際に確認しましたか? – Antonio

答えて

2

私もadd_custom_commandのTARGETのオーバーロードを使用してみました、そしてALLまたはプロジェクトの主な出力ファイルのいずれかに依存してカスタムターゲットを作るが、それはどちらか何もしませんしました。

これが問題のようです - CMakeのコマンドときターゲットを渡すことが必要で、彼らはあなたがadd_executableadd_libraryまたはadd_custom_targetのいずれかを使用して、以前に作成したターゲットの名前を指し、これ必ずしもコマンドによって生成された実際のアーティファクトファイルにマップされるとは限りません。

これは私の問題であり、ビルドディレクトリに3つのcscopeファイルが生成されているようです。私はadd_executableコマンドの最初の引数として渡されてきたものは何でも、ここでターゲットの名前があることをここ

cmake_minimum_required(VERSION 3.3 FATAL_ERROR) 
project(te) 

add_executable(main main.cpp asdf.cpp) 
add_custom_command(TARGET main POST_BUILD COMMAND cscope -b -q -U -R) 

注意。

+0

これは、 'POST_BUILD'が受け入れられる限り正解です。さもなければ、 'add_custom_command'の' OUTPUT'ファイルの1つに依存するターゲットはビルドされる前にコマンドを起動します。 – Antonio

関連する問題