gpt4 book ai didi

c++ - 使用 patsubst 将一条路径转换为另一条路径

转载 作者:太空宇宙 更新时间:2023-11-04 04:50:23 25 4
gpt4 key购买 nike

为了使我的项目的目录结构更有条理,我想将相同模块的源文件放入单独的目录中。所有目标文件都应该放在 obj 目录中。我也不想在 obj 目录中复制源代码树,所以我正在寻找一种方法来从源文件中删除目录部分以使其进入 obj 路径。

所以这是当前版本,它要求 obj 目录与源目录具有相同的布局。

OBJDIR:= obj
SRCDIR:= src

SRC := propertyfile/propertyfile.cpp otheritems/file.cpp otheritmes/subtree/bla.cpp
OBJ := $(patsubst %.cpp, $(OBJDIR)/%.o, $(SRC))

更清楚地说:我的来源位于

src/propertyfile/*
src/otheritems/*
src/otheritmes/subtree/*

等等。

obj 文件应该都在 obj 中,没有中间目录。使用上面的 patsubst,它只是将 src 部分替换为 obj 制作,即 src/propertyfile/propertyfile.cppobj/propertyfile/propertyfile.o 但我想有 obj/propertyfile.o

指向有关这些模式如何工作以及它接受哪些参数的良好解释的指针也会有所帮助。

更新:

到目前为止,我通过使用以下行取得了一些进展:

OBJ :=      $(addprefix obj/,$(notdir $(SRC:.cpp=.o)))

但是现在构建规则不再起作用,因为名称不匹配,所以我需要一个也适用于构建规则的模式。

最佳答案

实现此目的的一种方法是使用 vpath .

另一种方式,比如:

OBJ := ${SRC:%.cpp=${OBJDIR}/%.o}

关于c++ - 使用 patsubst 将一条路径转换为另一条路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16099833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com