我有一个 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++ 代码,我试图保持文件名与类名相同。
提前致谢!