我有一个C++ autoconf管理项目,我正在适应在FreeBSD主机上编译。 原始系统是Linux,所以我让一个AM_CONDITIONAL来区分我正在构建的主机并将代码分离到系统特定的文件中。Automake和同名文件
configure.ac
AC_CANONICAL_HOST AM_CONDITIONAL([IS_FREEBSD],false) case $host in *free*) AC_DEFINE([IS_FREEBSD],[1],[FreeBSD Host]) AM_CONDITIONAL([IS_FREEBSD],true) BP_ADD_LDFLAG([-L/usr/local/lib]) ;; esac
Makefile.am
lib_LTLIBRARIES=mylib.la mylib_la_SOURCES=a.cpp \ b.cpp if IS_FREEBSD mylib_la_SOURCES+=freebsd/c.cpp else mylib_la_SOURCES+=linux/c.cpp endif
当我运行automake的失败与此类型的消息:
Makefile.am: object `c.lo' created by `linux/c.cpp' and `freebsd/c.cpp'
如何配置automake的任何想法甚至在Makefile.in构建过程中尊重这个条件?
我这个作品,如果文件有不同的名称,但它的c + +代码,我试图保持文件名相同的类名。
在此先感谢!
Makefile.am中有一个输入错误:“IS_FREEBSD”应为“if IS_FREEBSD”。 – adl 2009-05-28 07:44:29
谢谢adl,修改 – 2009-05-28 11:52:26