我正在尝试在 Automake 中添加一些编译选项,但这些方法都不起作用。
这是我的configure.ac
:
AC_INIT(...)
AC_PREREQ([2.59])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.10 foreign -Wall no-define])
AC_PROG_CXX
AC_PROG_LIBTOOL
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile src/Makefile test/Makefile])
AC_LANG(C++)
AC_OUTPUT
我有父母Makefile.am
(在顶级目录中):
#AM_CFLAGS = ... # doesn't work
AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
SUBDIRS = src test
dist_noinst_SCRIPTS = autogen.sh
和Makefile.am
每个源目录一个;src/Makefile
:
include_HEADERS = ...
lib_LIBRARIES = ...
和test/Makefile
:
#AM_CFLAGS = ... # doesn't work
bin_PROGRAMS = myprog #test
myprog_SOURCES = ...
myprog_LDADD = ../src/libmylib.a
#myprog_CFLAGS = ... # Doesn't work either
我尝试取消注释所有注释行的组合,即:
- 添加
AM_CFLAGS = ...
到父Makefile.am
级 - 这应该为所有受影响的源设置 CFLAGS - 添加
AM_CFLAGS = ...
到其他两个Makefile.am
s - 将 myprog_ 添加
CFLAGS = ...
到 Makefile.am(这应该在编译 myprog 时设置 CFLAGS)
但这些都没有任何影响。我的程序 ( myprog
) 和它的库 ( mylib
) 都在编译/链接一些默认标志,这些标志类似于-DHAVE_CONFIG -g -O2
.
我也尝试过使用INCLUDES
而不是AM_CFLAGS
,但没有帮助。
任何人都知道这里发生了什么以及如何解决它?