Lui*_*nio 12 c++ automake autoconf autotools configure
我有一个项目可以基于一个定义生成两个不同的应用程序.
libfoo_la_CXXFLAGS = -DMYDEFINE
Run Code Online (Sandbox Code Playgroud)
我必须修改Makefile.am来设置这个定义,所以它不是自动的.
我可以通过configure命令以某种方式设置此定义吗?有没有其他方法可以使用autotools设置一个定义?
你必须编辑文件configure.ac
,之前AC_OUTPUT
(这是文件中的最后一件事)添加一个调用AC_DEFINE
.
在像你这样的简单案例中,它应该足够了:
AC_DEFINE(MYDEFINE)
Run Code Online (Sandbox Code Playgroud)
如果要设置值,请使用:
AC_DEFINE(MYDEFINE, 123)
Run Code Online (Sandbox Code Playgroud)
最后一个将添加-DMYDEFINE=123
到标志,或者#define MYDEFINE 123
如果您使用它,则添加到生成的autoconf标头中.
我建议您从一开始就阅读文档,并完成他们的示例和教程.还要检查其他项目配置文件以查看它们如何使用不同的功能.
编辑:如果要将命令行上的标志传递给make
命令,则执行以下操作:
libfoo_la_CXXFLAGS = $(MYFLAGS)
Run Code Online (Sandbox Code Playgroud)
然后你这样打电话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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9854 次 |
最近记录: |