ヘッダーファイルをcommon_include
SOURCESのどこかに追加する必要があります。それ以外の場合は、のtarballにパッケージ化されませんmake dist
。この場合、make distcheck
失敗するはずです。私のコメントで述べたように、私make distcheck
は確かに失敗していると思います。これの証拠については、作業ディレクトリをチェックする必要があります。おそらくディレクトリ_build
とディレクトリ_inst
、そしておそらくmy-project-1.0
ディレクトリ構造の一部ではないディレクトリがあるでしょう。
編集:これが私がそれをする方法です:
configure.ac
AC_PREREQ([2.62])
AC_INIT([my-project]、[1.0.0]、[my-project@example.com]、[my-project])
AC_CONFIG_SRCDIR([subdir1 / foo.cc])
LT_PREREQ([2.2.4])
AC_CANONICAL_SYSTEM
AM_INIT_AUTOMAKE
LT_INIT
AC_PROG_CXX
AC_PROG_MAKE_SET
AC_SUBST([LIBTOOL_DEPS])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
典型的な定型文。C ++コンパイラを除いて、あまり見ることはありません。
Makefile.am
AUTOMAKE_OPTIONS=1.11外国人
bin_PROGRAMS = baz
lib_LTLIBRARIES = libfoo.la libbar.la
baz_SOURCES = $(top_srcdir)/subdir3/baz.cc \
$(top_srcdir)/common_include/bar.hpp \
$(top_srcdir)/common_include/foo.hpp
baz_CXXFLAGS = -I $(top_srcdir)/ common_include
baz_LDADD = libfoo.la libbar.la
libfoo_la_CXXFLAGS = -I $(top_srcdir)/ common_include
libfoo_la_SOURCES = $(top_srcdir)/subdir1/foo.cc \
$(top_srcdir)/common_include/foo.hpp
libbar_la_CXXFLAGS = -I $(top_srcdir)/ common_include
libbar_la_SOURCES = $(top_srcdir)/subdir2/bar.cc \
$(top_srcdir)/common_include/bar.hpp
2つのライブラリと、にヘッダーを付けてそれらに依存するプログラムを作成しましたcommon_include
。物事をパッケージ化するために、あなたは実際にいくつかのオブジェクトのために一度だけヘッダーファイルを参照する必要があります。私は常に、主にそれらを文書化するためにそれらを明示的にリストします。autoconfシステムは、ヘッダーの正しい依存関係を構築するのに十分スマートです。
あなたが疑問に思ってmake distcheck
いた場合、実際に機能します:
my-project-1.0.0.tar.gz
my-project-1.0.0 /
my-project-1.0.0 / ltmain.sh
my-project-1.0.0 / configure.ac
my-project-1.0.0 / install-sh
my-project-1.0.0/missing
my-project-1.0.0 / subdir2 /
my-project-1.0.0 / subdir2 / bar.cc
my-project-1.0.0 / subdir3 /
my-project-1.0.0 / subdir3 / baz.cc
my-project-1.0.0 / Makefile.in
my-project-1.0.0 / subdir1 /
my-project-1.0.0 / subdir1 / foo.cc
my-project-1.0.0 / common_include /
my-project-1.0.0 / common_include / bar.hpp
my-project-1.0.0 / common_include / foo.hpp
my-project-1.0.0 / config.sub
my-project-1.0.0 / configure
my-project-1.0.0 / config.guess
my-project-1.0.0 / aclocal.m4
my-project-1.0.0 / Makefile.am
my-project-1.0.0 / depcomp