C 自动工具包括头文件

C 自动工具包括头文件,c,autotools,C,Autotools,我有一个目录结构,如 Makefile.am Configure.ac src/ add.c add.h Makefile.am tests/ test.c Makefile.am test/Makefile.am: AM_CFLAGS = -Wall -lcunit AM_CPPFLAGS = -I$(top_srcdir)/src bin_PROGRAMS = test te

我有一个目录结构,如

Makefile.am
Configure.ac
     src/
         add.c
         add.h
         Makefile.am

     tests/
         test.c
         Makefile.am
test/Makefile.am:

AM_CFLAGS = -Wall -lcunit
AM_CPPFLAGS = -I$(top_srcdir)/src  
bin_PROGRAMS = test
test_SOURCES = tests.c src/add.h
test_CFLAGS = $(AM_CFLAGS)
测试/测试c

#include "src/add.h"
src/add.h:

int addNum(int a, int b);
当我制作文件时,给出的是错误信息

undefined reference to `addNum'

我假设在test.c源代码的某个地方,您实际上调用了addNum函数。然后您需要函数的定义,而不仅仅是声明。声明所做的只是告诉编译器函数存在,然后由链接器实际查找函数定义,如果因为没有链接从add.c创建的对象文件而找不到函数定义,我假设定义是,您得到了错误。您已经显示您有一个声明,int addNum的定义在哪里?您是否正确编译并链接了该文件?@Joachim Pileborg我确实调用了tests/test.c中的addNum函数,如何链接Makefile.am.Thank中的对象文件。将Add.c源文件添加到test_源文件,而不是头文件。我修改了test_源=tests.c src/Add.h src/Add.c,但它没有告诉任何规则使目标为“src/Add.c”,“test add.o”需要。我错过了什么?