Automake Libtool «Нет правил для создания цели»

Я пытался собрать библиотеку GLTools, которая сопровождает OpenGL SuperBible, в библиотеку libtool с automake.

Я настроил autoconf и automake, но когда дело доходит до сборки библиотеки, я получаю:

$ make
make: *** No rule to make target `GLBatch.lo', needed by `libgltools.la'.  Stop.

Я искал в Google столько, сколько позволяло мне мое здравомыслие, и ничего не нашел, я новичок в автоматическом производстве, поэтому я не совсем уверен, что искать. Я уверен, что это либо крошечная ошибка, либо я пропустил что-то фундаментальное.

Вот мой Makefile.am:

ACLOCAL_AMFLAGS = -I m4

lib_LTLIBRARIES = libgltools.la
libgltools_la_SOURCES = GLBatch.cpp GLShaderManager.cpp GLTriangeBatch.cpp GLTools.cpp math3d.cpp glew.c
#libgltools_la_CFLAGS = 
libgltools_la_LIBADD = -lX11 -lglut -lGL -lGLU -lm

include_HEADERS = GLBatchBase.h GLBatch.h GLFrame.h GLFrustum.h GLGeometryTransform.h GLMatrixStack.h GLShaderManager.h GLTools.h GLTriangleBatch.h math3d.h StopWatch.h GL/glew.h GL/glxew.h GL/wglew.h

EXTRA_DIST = autogen.sh

И мой configure.ac, если это имеет значение:

#                                               -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ([2.67])
AC_INIT([libgltools.la], [0.1], [[email protected]])
AM_INIT_AUTOMAKE([libgltools.la], [0.1])
AC_PROG_LIBTOOL
AC_SUBST(LIBTOOL_DEPS)
AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([src/])
AC_CONFIG_HEADERS([include/config.h])

# Checks for programs.
AC_PROG_CXX
AC_PROG_CC

# Checks for libraries.
# FIXME: Replace `main' with a function in `-lGL':
AC_CHECK_LIB([GL], [main])
# FIXME: Replace `main' with a function in `-lGLU':
AC_CHECK_LIB([GLU], [main])
# FIXME: Replace `main' with a function in `-lX11':
AC_CHECK_LIB([X11], [main])
# FIXME: Replace `main' with a function in `-lglut':
AC_CHECK_LIB([glut], [main])
# FIXME: Replace `main' with a function in `-lm':
AC_CHECK_LIB([m], [main])

# Checks for header files.
AC_PATH_X
AC_CHECK_HEADERS([inttypes.h stddef.h stdint.h stdlib.h string.h sys/time.h unistd.h])

# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_INLINE
AC_TYPE_INT32_T
AC_TYPE_INT64_T
AC_TYPE_UINT64_T
AC_CHECK_TYPES([ptrdiff_t])

# Checks for library functions.
AC_HEADER_MAJOR
AC_FUNC_MALLOC
AC_CHECK_FUNCS([gettimeofday sqrt strchr strstr])

AC_CONFIG_FILES([Makefile])
AC_OUTPUT

Большое спасибо.


person Jonathan Hatchett    schedule 08.12.2011    source источник
comment
Вы запускали libtoolize в исходном дереве?   -  person Brett Hale    schedule 08.12.2011
comment
У вас есть файл GLBatch.cpp в вашем каталоге?   -  person adl    schedule 09.12.2011


Ответы (2)


Трудно сказать, основываясь на вашем описании, но я готов поспорить, что вам нужно поместить свой Makefile.am в каталог src, а затем создать Makefile.am в каталоге GLTools, который выглядит следующим образом:

SUBDIRS = src
ACLOCAL_AMFLAGS = -I m4

Также можно выполнить нерекурсивное создание, но для этого потребуется некоторое дополнительная настройка.

Вот я сделал это для вас:

https://github.com/msteinert/gltools

person Mike Steinert    schedule 08.12.2011
comment
Большое спасибо. Вот оно! Я совсем забыл сказать, что мои исходники находятся в src/. Просто для записи мне пришлось добавить src/Makefile в AC_CONFIG_FILES, чтобы я получил ошибку «make: *** Нет правила для создания цели «все», необходимого для «libgltools.la». Спасибо за помощь. - person Jonathan Hatchett; 09.12.2011

Вы должны добавить куда-нибудь в свой configure.ac файл:

LT_INIT
LT_LANG([C++])

Или, альтернативно, согласно документам:

LT_INIT
AC_PROG_CXX
person rodrigo    schedule 08.12.2011