我有一个 C++ autoconf 托管项目,我正在调整它以在 FreeBSD 主机上编译。最初的系统是 Linux,所以我做了一个 AM_CONDITIONAL 来区分我正在构建的主机并将代码分成系统特定的文件。
配置.ac
AC_CANONICAL_HOST
AM_CONDITIONAL([IS_FREEBSD],假)
案例$主机在
*自由*)
AC_DEFINE([IS_FREEBSD],[1],[FreeBSD 主机])
AM_CONDITIONAL([IS_FREEBSD],真)
BP_ADD_LDFLAG([-L/usr/local/lib])
;;
经社理事会
生成文件.am
lib_LTLIBRARIES=mylib.la
mylib_la_SOURCES=a.cpp \
b.cpp
如果 IS_FREEBSD
mylib_la_SOURCES+=freebsd/c.cpp
别的
mylib_la_SOURCES+=linux/c.cpp
万一
当我运行 automake 时,它会失败并显示以下消息:
Makefile.am:由 `linux/c.cpp' 和 `freebsd/c.cpp' 创建的对象 `c.lo'
即使在 Makefile.in 构建过程中,关于如何配置 automake 以尊重此条件的任何想法?
如果文件有不同的名称,我可以这样做,但它是 c++ 代码,我试图保持文件名与类名相同。
提前致谢!