eol*_*old 3 unix automake gcc compilation autotools
我试图在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
Run Code Online (Sandbox Code Playgroud)
我有父母Makefile.am(在顶级目录):
#AM_CFLAGS = ... # doesn't work
AUTOMAKE_OPTIONS = subdir-objects
ACLOCAL_AMFLAGS = ${ACLOCAL_FLAGS}
SUBDIRS = src test
dist_noinst_SCRIPTS = autogen.sh
Run Code Online (Sandbox Code Playgroud)
和Makefile.am每个源目录; src/Makefile:
include_HEADERS = ...
lib_LIBRARIES = ...
Run Code Online (Sandbox Code Playgroud)
并且test/Makefile:
#AM_CFLAGS = ... # doesn't work
bin_PROGRAMS = myprog #test
myprog_SOURCES = ...
myprog_LDADD = ../src/libmylib.a
#myprog_CFLAGS = ... # Doesn't work either
Run Code Online (Sandbox Code Playgroud)
我尝试取消注释评论行的所有组合,即:
AM_CFLAGS = ...到父级Makefile.am- 这应该为所有受影响的源设置CFLAGSAM_CFLAGS = ...另外两个Makefile.am小号CFLAGS = ...到Makefile.am(这应该在编译myprog时设置CFLAGS)但这些都没有任何影响.我的program(myprog)和它的库(mylib)都保持编译/链接一些默认标志,就像这样-DHAVE_CONFIG -g -O2.
我也尝试使用INCLUDES而不是AM_CFLAGS,但没有帮助.
任何人都知道这里发生了什么以及如何解决它?
AM_CXXFLAGS.AM_CXXFLAGS应在Makefile.am声明内容时,你实际编制(即bin_PROGRAMS,lib_LTLIBRARIES...).include声明.subdir-objects.如果Makefile.am失控,请使用include陈述.LT_INIT不是AC_PROG_LIBTOOL.AC_LANG(C++)什么都不做configure.ac.它设置运行configure测试时要使用的语言.此外,AC_LANG_PUSH和AC_LANG_POP正在做的更明智方式.ACLOCAL_AMFLAGS?| 归档时间: |
|
| 查看次数: |
3393 次 |
| 最近记录: |