gpt4 book ai didi

linux - 将 cpp make 文件修改为 .c 文件不起作用

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

我正在尝试修改将 cpp 构建为 c 文件的 makefile,但我遇到了一些字符串替换问题。不知道有没有人能指出错误。

这是文件的一部分:

SOURCES := \
lz4.c \
lz4frame.c \
lz4hc.cpp \
xxhash.c

OBJECTS := $(addprefix $(OBJ_DIR)/,$(subst .c,.o,$(SOURCES)))
DEPENDS := $(addprefix $(OBJ_DIR)/,$(subst .c,.d,$(SOURCES)))

all: $(OUT_DIR)/$(LIB_NAME)

clean:

rm -rf $(OBJ_DIR)
rm -rf $(OUT_DIR)

$(OUT_DIR)/$(LIB_NAME): $(OBJECTS)
@rm -f $@
$(AR) cr $@ $^

$(OBJECTS): $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c
@mkdir -p $(@D)
$(CXX) -MMD -MF $(OBJ_DIR)/$*.d -MP -MT'$(OBJ_DIR)/$*.o $(OBJ_DIR)/$*.d' -c $(CPPFLAGS) $(CXXFLAGS) $< -o $@

.PHONY: all clean

-include $(DEPENDS)

但是当我输入 make clean 时,我得到了这个:

 Makefile:38: target `Release64/obj/lz4hc.opp' doesn't match the target pattern

或者当我尝试构建时,我得到了这个:

g++-4.6 -MMD -MF ./Release64/obj/Release64/obj/lz4hc.opp.d -MP -MT'./Release64/obj/Release64/obj/lz4hc.opp.o ./Release64/obj/Release64/obj/lz4hc.opp.d' -c -I../../../include -I../../../thirdparty/include/lz4 -std=c++0x -fPIC -O2 -m64  -o Release64/obj/lz4hc.opp
g++-4.6: fatal error: no input files

编译终止。

我认为问题出在这一行,但我无法找出问题所在:

OBJECTS := $(addprefix $(OBJ_DIR)/,$(subst .c,.o,$(SOURCES)))
DEPENDS := $(addprefix $(OBJ_DIR)/,$(subst .c,.d,$(SOURCES)))

谢谢!

最佳答案

您的源变量是:

SOURCES := \
lz4.c \
lz4frame.c \
lz4hc.cpp \
xxhash.c

记下文件名 lz4hc.cpp。然后将 .c 替换为 .o,这会为您提供 lz4hc.opp 的文件名,这正是您看到的错误。

不清楚您是否真的想要混合使用 C 和 C++ 文件,或者您是否只是忘记更改变量中其中一个文件的名称。

关于linux - 将 cpp make 文件修改为 .c 文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712155/

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