【问题标题】:How to specify directory used to evaluate makefile targets?如何指定用于评估 makefile 目标的目录?
【发布时间】:2017-05-17 16:27:31
【问题描述】:

我正在编写一个 gnu make 文件来构建和运行 C++ 单元测试。我让 makefile 将其 .o 文件放在包含 make 文件的同一目录中。

我们有一组不同的 makefile 用于构建我们的交付产品。这些 makefile 将每个 .o 文件放在具有相应 C++ 源文件的同一目录中。

我的单元测试生成文件将其 .o 目标定义为“%.o: %.cpp”。在该 makefile 中,我将 VPATH 定义为具有 .cpp 文件的位置。此外,我的单元测试编译命令使用 g++ MMD 和 MP 选项生成和使用 .d 文件。

这就是我遇到的问题。

我希望我的单元测试 makefile 目标仅通过查看我的单元测试 makefile 目录来评估 .o 目标。

如果产品交付 makefile 已经在源文件所在的位置生成了 .o,我仍然希望我的单元测试 makefile 仅考虑其目录来确定是否需要重建 .o 文件。

但是,这并没有发生。如果产品交付 makefile 已经将 .o 放在源代码所在的位置,则单元测试 makefile 会看到该 .o,并表示不需要构建 .o。

在评估 .o 文件目标时,我有没有办法强制我的单元测试 makefile 只考虑单元测试 make 文件目录?

【问题讨论】:

    标签: gnu-make


    【解决方案1】:

    你是说.o 文件是通过你的VPATH 设置找到的吗?

    您可以使用特定模式的vpath 将查找限制为特定类型的文件:

    vpath %.cpp $(SRCDIR)
    

    而不是设置全局VPATH

    【讨论】:

    • 是的!这正是我所需要的。谢谢!