gpt4 book ai didi

c++ - Makefile:没有规则来制作目标。停止

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:54 25 4
gpt4 key购买 nike

我是 Makefile 的新手。我必须编写 Makefile 来构建共​​享库。

CC =g++
CFLAGS =-fPIC -Wall -Wextra -c
LDFLAGS =-shared
RM =rm -rf
TARGET_LIB =lib/Automat.so

SRC_DIR =src/
LIB_DIR =lib/
DEP_DIR =dep/

SRCS=IFSM.h IState.h ITransition.h FSM.h State.h Transition.h Wildcard.h PrimeTransition.h SingleTransition.h Exception.h Type.h Error.h
OBJS=$(SRCS:.h=.o)

.PHONY: all
all: $(TARGET_LIB)

$(TARGET_LIB): $(SRC_DIR)$(OBJS)
$(CC) $(LDFLAGS) -o $@ $^

$(SRC_DIR)$(SRCS:.h=.d):%.d:$(SRC_DIR)%.h
$(CC) $(CFLAGS) -MM $< > $(DEP_DIR)$@

include $(SRCS:.h=.d)

我的问题是我得到了错误

No rule to make target `IFSM.d'. Stop.

如果我从 SRCS 删除到文件,IState.d 就会出现问题。所有其他构建正确的 .d 文件(12 个中的 11 个)。

所有文件都存在并且写入正确(区分大小写)。

我真的不知道错误在哪里,我现在搜索了 2 个小时。

任何帮助都会很棒。

最好的问候亚历克斯

最佳答案

你包括在内

$(SRCS:.h=.d)

即本地目录下名为whatever.d的文件;但你有一个规则要制定

$(SRC_DIR)$(SRCS:.h=.d)

即名为 src/whatever.d 的文件。

您需要决定这些文件应该存放在哪里,并使两个规则匹配。

关于c++ - Makefile:没有规则来制作目标。停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20239563/

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