これは私がこのlinkをフォローし、私のプロジェクトでうまくいくようにそのステップを適応させました。完全にコンパイルできず、静的ライブラリとしてcppプロジェクトをリンクすることはできません
私の目標は、静的ライブラリとして配布するlibfile.a
を作成することです。プロジェクトツリーは以下の通りです:
project
|
+-src
+- <some cpp and hpp files>
|
+ containers
|
+- <other cpp and hpp files>
私は簡単にconfigure.ac
ファイルとMakefile.am
Sを作成しました。私が行くとき、今
project
|
+- configure.ac
+- Makefile.am
+-src
+- <some cpp and hpp files>
+ Makefile.am
|
+ containers
|
+- <other cpp and hpp files>
:ツリー構造は、この方法を変更(*)
aclocal; autoreconf --install; autoconf; ./configure
make
.o files
がために生成されたすべての.*pp files
src
に含まれているが、それはsrc/containers
でこれらのターゲットの生成を開始するときには、失敗しました。したがって、Makefile
は正しく生成されません。私は間違って何をしていますか?誰か助けてくれますか?
autoreconf -fvi
出力:
(*)
でマークされたコマンドは以下のものに置き換えられている
Brett Haleにより示唆されるように
# --- configure.ac ---
AC_PREREQ([2.68])
AC_INIT([filea], [1.0], [[email protected]])
AM_INIT_AUTOMAKE([filea], [1.0])
AC_CONFIG_SRCDIR([src/HashFunctions.cpp])
AC_CONFIG_HEADERS([config.h])
AC_PROG_CXX
AC_PROG_RANLIB
AC_CHECK_HEADERS([stddef.h stdint.h string.h])
AC_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_SIZE_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT8_T
AC_FUNC_MALLOC
AC_FUNC_MKTIME
AC_CHECK_FUNCS([memset])
AC_OUTPUT([Makefile src/Makefile])
# --- Makefile.am ---
AUTOMAKE_OPTIONS = foreign
SUBDIRS = src
# --- src/Makefile.am ---
lib_LIBRARIES = libfile.a
libfile_a_SOURCES = \
ConfigLib.hpp \
ConfigLib.cpp \
HashFunctions.cpp \
HashFunctions.hpp \
Logger.hpp \
Logger.cpp \
Queue.hpp
libfile_a_SOURCES += \
containers/SafeContainer.cpp \
containers/SafeInterger.cpp \
containers/SafeMap.cpp
EDIT 1 :
PSはここに関与してファイルがあります
autoreconf: Entering directory `.'
autoreconf: configure.ac: not using Gettext
autoreconf: running: aclocal --force
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /usr/bin/autoconf --force
autoreconf: running: /usr/bin/autoheader --force
autoreconf: running: automake --add-missing --copy --force-missing
autoreconf: Leaving directory `.'
一緒に行く:まだルールがサブディレクトリ内のターゲットを生成するために発見されない
./configure
make
。
EDIT 2は私が非再帰的アプローチ(Karel Zak's blogのおかげで)に切り替え、最終的に私は私のlibがmake
することができます。
「aclocal;」の代わりに 'autoreconf -fvi'を試してみることができますか? ....; 'コマンド? –
私は[SCons](http://scons.org)、[CMake](https://cmake.org)、その他のビルドシステムを調査することを提案してもいいですか? - [make](https://www.gnu。 org/software/make /) - *何でも、 'autoconf' /' automake'というホラー... –
@JesperJuhl - はい、cmakeは純粋な意図で始めました。 bash/m4と違って、autotoolsでの20年の経験と他のどこでも使われていない構文がなくても、ホイールを効果的に再発明することができます。 –