2017-05-17 4 views
0

私は、次のプロジェクトツリーがあります。datamodel/インサイドターゲットを作成するには、noルール「mesh2D.h」、「すべての-AM」によって必要

src 
├── Converters 
├── datamodel 

を私はソースCPPに含めるヘッダーを持っていますファイルはConverters/です。

は、しかし、私は次のエラーを取得する:あなたの助けのための

include $(top_srcdir)/adm_local/unix/make_common_start.am 

AM_CPPFLAGS+= \ 
-I$(top_srcdir)/src/datamodel 

libSource_SOURCES=\ 
    source.cpp \ 
    source.h 

include_HEADERS=\ 
    mesh2D.h 

SUBDIRS= 

include $(top_srcdir)/adm_local/unix/make_common_end.am 

ありがとう:

No rule to make target 'mesh2D.h', needed by 'all-am' 

これは私のautomake Makefile.amConverters/内部です!

+1

重要な情報が欠落していると感じています。確かにそのエラーは、そのディレクトリ内のメイクファイルから来る(そして別のものではなく、おそらくメインレベル)?他のメイクファイルの部分はどのように見えるのですか? あなたは、そのファイルが依存関係にあるが、存在しないルールのどこかにあります。たぶんそれは宣言された依存関係のパスの問題です。これをデバッグするには、完全なプロジェクトのソースが必要です。 – planetmaker

+0

実際に新しいdatamodelサブディレクトリを追加する前に、すべてうまくいきました。私は、データ・モデルからの新しいヘッダーに対してコンパイルするためにConvertersソース・ファイルが必要です – PerelMan

答えて

0

あなたはdatamodel/Makefile-filesに再帰的なメイク、または

include_HEADERS += %reldir%/mesh2D.h 

を使用している場合、私はあなたがディレクトリごとに単一Makefile.amを使用する場合を含むか、または

datamodel/Makefile.am

include_HEADERS = mesh2D.h 

ラインを移動します

include_HEADERS += datamodel/mesh2D.h 

単一のを使用している場合ディレクトリごとに含まれないが含まれます。

include_HEADERSを使用すると、/usr/local/includemesh2D.hファイルがインストールされます。プログラムをコンパイルするためにちょうどmesh2D.hが必要な場合は、include_HEADERSの代わりにmesh2D.hを使用して、配布用tarball(make dist)にインストールしないでください(make install)。

関連する問題