【问题标题】:Automake Libtool 'No rule to make target'Automake Libtool'没有规则来制作目标'
【发布时间】:2011-12-08 18:36:23
【问题描述】:

我一直在尝试将OpenGL SuperBible 随附的 GLTools 库构建到带有 automake 的 libtool 库中。

我已经设置了 autoconf 和 automake,但是在实际构建库时,我得到了:

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

我已经尽可能多地搜索谷歌了,我的理智会让我一无所获,我是 automake 的新手,所以我不太确定要搜索什么。我确定这要么是一个小错误,要么是我错过了一些基本的东西。

这是我的 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], [jon.hatchett@gmail.com])
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

非常感谢。

【问题讨论】:

  • 你在源码树上运行libtoolize了吗?
  • 您的目录中有GLBatch.cpp 文件吗?

标签: c++ c autoconf automake libtool


【解决方案1】:

根据您的描述很难说,但我敢打赌,您需要将您的Makefile.am 放在src 目录中,然后在GLTools 目录中创建一个Makefile.am,如下所示:

SUBDIRS = src
ACLOCAL_AMFLAGS = -I m4

也可以使用non-recursive make,但这需要一些额外的设置。

这是我为你做的:

https://github.com/msteinert/gltools

【讨论】:

  • 非常感谢。就是这样!我已经完全忘记告诉它我的来源在 src/.只是为了记录,我不得不将 src/Makefile 添加到AC_CONFIG_FILES 中,我得到了错误'make: *** No rule to make target 'all', required by 'libgltools.la'`。为帮助干杯。
【解决方案2】:

您应该在 configure.ac 文件中的某处添加:

LT_INIT
LT_LANG([C++])

或者,根据文档:

LT_INIT
AC_PROG_CXX

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 2014-03-10
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多