我正在学习使用check来检查我的代码。我的项目设置了autotools,我已经设置了检查设置。
我正在制作的程序是一棵红黑树,我希望能够用于其他项目。对于我的一个测试,我想从文件中读取输入以用作插入树中的测试数据。我在我的测试目录中有一个名为words.txt的文件,我想从中读取。我喜欢将构建树分开。那么如何设置我的makefile将word文件放在正确的位置?那么我可以从运行检查的目录中读取它吗?
以下是一切:
项目目录:
├── aclocal.m4
├── autom4te.cache
│ ├── output.0
│ ├── output.1
│ ├── requests
│ ├── traces.0
│ └── traces.1
├── build-aux
│ ├── ar-lib
│ ├── compile
│ ├── depcomp
│ ├── install-sh
│ ├── missing
│ └── test-driver
├── config.h.in
├── config.h.in~
├── configure
├── configure.ac
├── Makefile.am
├── Makefile.in
├── src
│ ├── libredblack.c
│ ├── libredblack.h
│ ├── main.c
│ ├── Makefile.am
│ └── Makefile.in
└── tests
├── check_libredblack.c
├── Makefile.am
├── Makefile.in
└── words.txt
测试/ Makefile.am:
TESTS = check_libredblack
check_PROGRAMS = check_libredblack
check_libredblack_SOURCES = check_libredblack.c $(top_builddir)/src/libredblack.h
check_libredblack_CFLAGS = @CHECK_CFLAGS@
check_libredblack_LDADD = $(top_builddir)/src/libredblack.a @CHECK_LIBS@
答案 0 :(得分:0)
一种方法是让Makefile告诉测试程序在哪里找到它。
添加到您的测试程序CPPFLAGS
之类的-DWORDS_LOCATION="\"$(top_srcdir)/tests/data/words.txt\""
,然后数据文件的路径将作为字符串在您的程序中使用,在宏WORDS_LOCATION
中定义。