我有一個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