我有以下Makefile.am這是應該(通過Python腳本)來創建foo.h
foo.hdb
和foo.cdb
:Automake的,GNU做,檢查和(忽略)模式規則
TESTS = check_foo
check_PROGRAMS = check_foo
check_foo_SOURCES = check_foo.c $(top_builddir)/src/isti.h \
foo.cdb foo.h foo.hdb
check_foo_CFLAGS = @[email protected] $(all_includes) -I../../clib/src/
check_foo_LDADD = $(top_builddir)/src/libcorm.la @[email protected] -lsqlite3
%.hdb %.cdb: %.h
PYTHONPATH=$(top_builddir)/cgen/src python $(top_builddir)/cgen/src/isti/cgen/run.py $<
clean-local:
rm -f *.hdb *.cdb
然而,儘管make foo.hdb
和make foo.cdb
工作(調用Python代碼,並從foo.h
產生foo.hdb
和foo.cdb
文件),make clean check
(或單獨兩個)沒有(缺foo.hdb
- 沒有這樣的文件) - 模式規則不叫生成foo.h
foo.hdb
。
換言之:對於check_foo_SOURCES中列出的文件,未調用模式規則。
我該如何做這項工作?其餘的autotools基礎設施工作正常。從查看Makefile我懷疑問題是自動工具如何擴展檢查源。
這是所有在Linux上與Gnu make。這裏是the Makefile。
[稍微更新以反映MadScientist的幫助]。
後來更新
下的Makefile(只是做,沒有自動工具)正常工作,所以這個問題似乎與自動工具和檢查的支持。 (請注意,我已從xxx.hdb切換到corm_xxx.h等,以便文件擴展名保持不變)。
更多詳細信息
因爲它似乎是相關的檢查宏,這是configure.ac:
AC_INIT([corm], [0.1], [[email protected]])
AC_CONFIG_MACRO_DIR([m4])
PKG_CHECK_MODULES([CHECK], [check >= 0.9.4])
AM_INIT_AUTOMAKE([-Wall foreign -Werror])
AC_PROG_CC_C99
AM_PROG_CC_C_O
LT_INIT
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_FILES([Makefile clib/Makefile clib/src/Makefile clib/tests/Makefile clib/docs/Makefile cgen/Makefile cgen/docs/Makefile example/Makefile example/src/Makefile])
AC_CHECK_PROGS([DOXYGEN], [doxygen], AC_MSG_WARN([Doxygen not found - continuing without Doxygen support]))
AM_CONDITIONAL([HAVE_DOXYGEN], [test -n "$DOXYGEN"])
AM_COND_IF([HAVE_DOXYGEN], [AC_CONFIG_FILES([clib/docs/Doxyfile cgen/docs/Doxyfile])])
SOLUTION
好了,總結各種事情下面,有兩個重要的問題(一旦我有固定的文件擴展名 - 請參閱「普通」的makefile和fceller的答案),其中任何一個足以使工作的事情:
(的處理),頭文件是複雜的。由於自動依賴性,編程生成的頭文件會破壞事情。解決方案是使用BUILT_SOURCES
但是(處理).c文件並不複雜。所以把corm_foo.c放在check_foo.c的前面會觸發該文件的生成。由於這也會生成corm_foo.h,所以一切正常(因爲check_foo.c現在可以包含corm_foo.h)。
另外,fceller對於整潔的makefile有一些很好的一般觀點,並解釋了爲什麼「普通」makefile有效。
什麼是您的'Makefile'?如果問題太大,您可以將其添加到pastebin – congusbongus 2013-02-18 22:28:32
您好 - 我已將它添加(pastebin鏈接)到問題,謝謝。 – 2013-02-18 23:02:44
什麼'找到。名稱foo.hdb輸出? – emallove 2013-02-19 00:00:20