我写了一个小lua模块,我使用autotools编译,我想修改它的组织:
现在我在主目录中有如下内容:
autogen.sh
configure.ac
Makefile.am
src
file1.c
file2.c
file3.c
任务
#!/bin/sh
echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS || exit 1
echo "Running libtoolize..."; libtoolize --copy --automake || exit 1;
echo "Running autoheader..." ; autoheader || exit 1
echo "Running autoconf..." ; autoconf || exit 1
echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
./configure "$@"
configure.ac
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ([2.69])
AC_INIT([lua-clangc], [0.0.1], [cedlemo@gmx.com])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC(clang gcc)
# Checks for libraries.
PKG_CHECK_MODULES([DEPS], [lua])
#LUA_VERSION = $(pkg-config --version)
#AC_SUBST([LUA_VERSION])
# Checks for header files.
AC_CHECK_HEADERS([string.h stdlib.h clang-c/Index.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AM_INIT_AUTOMAKE(1.13 dist-bzip2 foreign subdir-objects)
LT_PREREQ(2.4)
LT_INIT
AC_CONFIG_FILES([
Makefile
])
AC_OUTPUT
和Makefile.am
MAINTAINERCLEANFILES =
Makefile.in aclocal.m4 config.h.in configure
depcomp install-sh missing compile config.sub
config.guess ltmain.sh compile
lib_LTLIBRARIES = src/clangc.la
src_clangc_la_SOURCES = src/clangc.c src/indexlib.c src/translationunitlib.c src/constants.c src/clangc_module_functions.c
src_clangc_la_LDFLAGS = -module -avoid-version -shared -llua -lm -lclang -fPIC
我使用以下命令编译和安装lua模块:
./autogen.sh --libdir=/usr/lib/lua/5.3
make
sudo make install
我的文件安装在/usr/lib/lua/5.3
/usr/lib/lua/5.3/clangc.so
/usr/lib/lua/5.3/clangc.la
我想用
./autogen.sh --prefix=/usr
这是配置。如下所示:
libdir=prefix + /lib/lua/ + LUA_VERSION + /clangc/
(我已经有一种方法可以在configure.ac中获得LUA_VERSION)
一如既往,我对自己说:
我只需要修改我的配置。像这样:
AC_PREREQ([2.69])
AC_INIT([lua-clangc], [0.0.1], [cedlemo@gmx.com])
AC_CONFIG_SRCDIR([configure.ac])
AC_CONFIG_HEADERS([config.h])
# Checks for programs.
AC_PROG_CC(clang gcc)
# Checks for libraries.
PKG_CHECK_MODULES([DEPS], [lua])
LUA_VERSION=$(pkg-config --modversion lua | awk -F "." '{print $1"."$2}')
AC_SUBST([LUA_VERSION])
libdir=$prefix/lib/lua/$LUA_VERSION/clangc
# Checks for header files.
AC_CHECK_HEADERS([string.h stdlib.h clang-c/Index.h])
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AM_INIT_AUTOMAKE(1.13 dist-bzip2 foreign subdir-objects)
LT_PREREQ(2.4)
LT_INIT
AC_CONFIG_FILES([
Makefile
])
AC_OUTPUT
首先我必须找到当前的lua版本:
LUA_VERSION=$(pkg-config --modversion lua | awk -F "." '{print $1"."$2}')
在我的系统中:
- pkg-config——modversion lua返回5.3.1
- awk -F "。"{打印1美元"。"$2}'返回5.3
然后行:
libdir=$prefix/lib/lua/$LUA_VERSION/clangc
施展所有的魔法。
当我使用
./autogen.sh --prefix=/usr
我的lib被安装在:
/usr/lib/lua/5.3/clangc