我有一个项目可以基于一个定义生成两个不同的应用程序。
libfoo_la_CXXFLAGS = -DMYDEFINE
我必须修改 Makefile.am 来设置这个定义,所以它不是自动的。
我可以通过 configure 命令以某种方式设置这个定义吗? 有没有其他方法可以使用 autotools 设置一个定义?
最佳答案
您必须编辑文件 configure.ac
,并在 AC_OUTPUT
(这是文件中的最后一件事)之前添加对 AC_DEFINE
的调用.
在像你这样的简单情况下,它应该足够了:
AC_DEFINE(MYDEFINE)
如果要设置值,请使用:
AC_DEFINE(MYDEFINE, 123)
最后一个将 -DMYDEFINE=123
添加到标志(Makefile 中的 DEFS =
),并在生成的 #define MYDEFINE 123
如果你使用 autoconf header 。
我建议您从头开始阅读文档,并仔细阅读其中的示例和教程。还要检查其他项目的配置文件,看看它们如何使用不同的功能。
编辑:如果你想将命令行上的标志传递给 make
命令,那么你可以这样做:
libfoo_la_CXXFLAGS = $(MYFLAGS)
然后你像这样调用 make
:
$ make MYFLAGS="-DMYDEFINE"
如果你没有在命令行中设置MYFLAGS
,它将在makefile中未定义并且为空。
您还可以在 Makefile.am
中设置特定于目标的 CPPFLAGS
,在这种情况下,源文件将被重新编译,每组标志一次:
lib_LTLIBRARIES = libfoo.la libbar.la
libfoo_la_SOURCES = foo.c
libfoo_la_CPPFLAGS = -DFOO
libbar_la_SOURCES = foo.c
libbar_la_CPPFLAGS = -DBAR
关于c++ - 如何使用 Autoconf 通过 "./configure"设置定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11883651/