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