c++ - Makefile:编译 src 和测试目录时出错

标签 c++ makefile

LIB_DIRS = abcd xyz pqr mnq ghj

SER_DIRS = klm

.PHONY: default build lib service clean distclean

TEST_DIRS = abcd xyz pqr

test_lib :
        for dir in $(TEST_DIRS); do \
                $(MAKE) -C $$dir; \
        done

TESTS := $(addprefix TEST_, $(TEST_DIRS))

run : $(TESTS)

TEST_%:
        ./$*/test/$*_test --log_level=message

test :  test_lib run

default: all

all: build lib service

lib: 
        for dir in $(LIB_DIRS); do \
                $(MAKE) -C $$dir; \
        done

每个 LIB_DIR 都有一个 src 和 test 目录。使用 make all 命令,只有 src 目录文件应该被编译。但在我的例子中,测试目录文件也与 src 目录一起编译。使用 make test 命令时,只会编译测试目录文件。由于测试文件依赖于 src 文件,因此测试文件的 make all 会出现错误。有人可以帮我解决这个问题吗?

最佳答案

好吧,这是一个开场白:

您应该在知道如何构建libtest 的每个目录中提供Makefile。显然test依赖于lib

然后您可以将行更改为

lib: 
    for dir in $(LIB_DIRS); do \
            $(MAKE) -C $$dir; \
    done

lib: 
    for dir in $(LIB_DIRS); do \
            $(MAKE) -C $$dir lib; \ #<- notice the target
    done

test_lib 类似。否则,当前的变量集是不可能的,因为 sub-make 不知道该做什么。

关于c++ - Makefile:编译 src 和测试目录时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210768/

相关文章:

c++ - 我无法理解这个访问修饰符

c++ - Opengl 鼠标相机问题 (gluLookAt)

linux - 尝试使用自定义 DTB 构建 core-image-minimal 时 Makefile 错误

shell - Makefile - 参数列表太长,但仅在某些配置中

c++ - 有人提出为什么我的代码在 basic_ios 和 sstream 中产生错误吗?

c++ - 从巨大的 txt 中读取二维矩阵

函数问题中的 C++ 数组赋值

makefile - 如何更改 GNU Make 中的当前目录

iphone - 如何使用 XCode 4.3.2 为 iOS 构建动态库

java - 制造情况!部分程序使用 3 种编程语言。使用哪个构建工具?