2017-09-16 6 views
1

いくつかのC++ソフトウェアをコーディングし、プロジェクト全体をGNU autotoolsで管理します。#autotoolsを使って依存関係管理を含める

私は実際には冗長なC++コードの一部を持っているので、generate.cppというファイルに自動的に生成するスクリプト "generator.rb"を作成しました。

私はすべてが正常に動作し、この時点までに「object_list.txt」

からビルドターゲット「generated.cpp」その構築物「generated.cpp」を持っています。

ここで、この "generated.cpp"ファイルを別の "handwritten.cpp"に#includeします。 automakeにはautomaticalyインクルードファイルの依存関係を計算すると言われているので

、私はそれを期待する:

  • 「handwritten.o」を構築するとき、それは存在しないかでしない場合は、「generated.cpp」を再構築最新

  • トリガー新しい「handwritten.o」

を変更しましたobject_list.txtたびに構築していないので、私はそれをどのように行うことができますか?

備考:私のソースツリーはそのようなものです:

./ 
\_src/ 
| \_handwritten.cpp 
|_design/ 
| \_object_list.txt 
\_tools/ 
    \_generator.rb 

備考:私のビルドツリーはそのようなものです:automakeのはautomaticaly含まれるファイルの依存関係を計算すると言われているので

build/ 
\_gcc_debug/ 
    |_src/ 
    | \_handwritten.o 
    \_design/ 
     \_generated.cpp 

答えて

1

Automakeで生成されたMakefileが依存関係を生成するためコンパイルの副作用として、ビルドの一部として作成されるファイルには特別な処理が必要です。通常のコンパイルを試みる前に、そのようなファイルをビルドするようにAutomakeに指示する必要があります。 ...あなたはgenerated.cppを作成する必要があるルールを記述することで、その後

BUILT_SOURCES = generated.cpp 

:これは同様に、BUILT_SOURCESを使用して行われます。

+0

ありがとうございました。他の人には便利な精度です。これは、 "make handwritten.o"を実行しているときではなく、 "make"や "make check"を行っているときにのみ機能します(上記のBUILT_SOURCESリンクを参照してください)。しかし、今のところそれは私のためには十分です。 – user2174468

関連する問題