私は現在、autotoolsの理解に取り組んでいます。私はもうすぐそこにいますがAM_CFLAGS
、AM_LDLIBS
マクロに関しては、automakeの動作に少し困惑しています。
以下は私の非常に短いMakefile.amです
1 bin_PROGRAMS = sqlmigrate
2 sqlmigrate_SOURCES = sqlmigrate.c db.c
3
4 AM_CFLAGS=-g -Wall -D_LARGEFILE64_SOURCE=1 -I/usr/local/apr/include/apr-1
5 AM_LDLIBS=-lsqlite3 -lapr-1
私の理解では、AM_CFLAGS
とAM_LDLIBS
は対応する引数がに渡されない場合に使用されますが./configure
、与えられるとそのような引数になります。
ただし、Makefile.inを作成してconfigureを実行した後は、指定しmake all
たものを使用していないことは明らかです。CFLAGS
LDLIBS
AC_CHECK_LIB
(とにかく)さらに奇妙なのは、マクロを使用した場合に、configureスクリプトによってこれらのライブラリが含まれる可能性があることです。
1 # -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3
4 AC_PREREQ([2.68])
5 AC_INIT([sqlmigrate], [1.0], [])
6 AM_INIT_AUTOMAKE(1.8)
7 AC_CONFIG_SRCDIR([sqlmigrate.c])
8
9 # Checks for programs.
10 AC_PROG_CC
11 AC_PROG_INSTALL
12
13 # Checks for libraries.
14 # AC_CHECK_LIB([sqlite3], [sqlite3_open])
15 # AC_CHECK_LIB([apr-1], [apr_pool_initialize])
16
17 # Checks for header files.
18 AC_CHECK_HEADERS([stdlib.h string.h unistd.h])
19
20 # Checks for typedefs, structures, and compiler characteristics.
21
22 # Checks for library functions.
23
24 AC_CONFIG_HEADER(config.h)
25 AC_CONFIG_FILES([Makefile])
26 AC_OUTPUT
したがって、AC_CHECK_LIB
コメントアウトされた行を使用して、gcc
ライブラリをリンクせずに呼び出されます。
ここでautotoolsのスレッドにぶら下がっているような気がします。私の現実を爆発させて、私のやり方の誤りを見せてください。
御時間ありがとうございます!