【问题标题】:Makefiles: Change working directory for make checkMakefiles:更改工作目录以进行检查
【发布时间】:2013-09-21 22:36:05
【问题描述】:

我有一个 C++ 项目,它通过 CppUnit 进行单元测试,并具有以下目录结构:

.
|-- bin
|   `-- tests
|-- src
|   `-- include
`-- test
    `-- include

在顶级目录中是我的 Makefile.am 文件。我想使用非递归 Makefile。我已经能够在 bin 文件夹中构建我的项目的可执行文件,并在 bin/tests 文件夹中构建 make check 的测试。

问题如下: 当 make check 运行测试时,当前工作目录仍然是顶级目录(即我运行 make check 的目录)。是否可以专门为测试套件更改工作目录?

我的 Makefile.am 文件中的相关部分如下:

$(TESTDIR)=./bin/tests
check_PROGRAMS = $(TESTS)
TESTS = $(TESTDIR)clocktest

__TESTDIR_clocktest_SOURCES = test/clocktest.cpp test/unittest.cpp src/clock.cpp
__TESTDIR_clocktest_CPPFLAGS = $(AM_CPPFLAGS) $(CPPUNIT_CFLAGS) $(TESTCPPFLAGS)
__TESTDIR_clocktest_LDADD = $(CPPUNIT_LIBS)

【问题讨论】:

    标签: c++ makefile cppunit


    【解决方案1】:

    来自make --help

    -C DIRECTORY, --directory=DIRECTORY
                                Change to DIRECTORY before doing anything.
    

    我认为这应该可以满足您的需求。

    【讨论】:

    • 感谢您的建议,但这不是我想要的。就像我在问题中提到的那样:我使用非递归 make 并且 ./bin/tests 中没有 Makefile,所以这对我没有帮助。
    • 感谢您的努力。 :-) 我觉得我在这里忽略了一些非常基本的东西......我添加了一段代码。您能否提供一个建议,我应该如何更改这段代码以在 make 规则中加入 cd?
    • 我在想任何规则运行单元测试,让它运行类似于cd $(TESTDIR) && ./clocktest
    • 确实如此。我通过将以下内容添加到 makefile 来解决它:check : $(noinst_PROGRAMS) (cd $(TESTDIR); ./run_tests.sh)
    猜你喜欢
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多