繁体   English   中英

Makefile构建C和CPP文件

[英]Makefile to build C and CPP files

我一直在寻找一个Makefile来编译包含许多C和C ++文件的大型项目。 我已经使用Eclipse成功编译了它,但是我想转到一个独立的Makefile。 我发现这个通用的Makefile可以很好地与我的项目一起工作,除了它只能编译C或C ++文件,而不能一次编译两个文件...因此它在链接时失败。

为CPP或C编译的原始Makefile的位:

        SRC_EXT = cpp
        OURCES = $(shell find $(SRC_PATH)/ -name '*.$(SRC_EXT)' -printf '%T@\t%p\n' \
        SOURCES = $(shell find $(SRC_PATH)/ -name '*.$(CPP_EXT)' -o -name '*.$(C_EXT)' -printf '%T@\t%p\n' \
                            | sort -k 1nr | cut -f2-)
        # fallback in case the above fails
        rwildcard = $(foreach d, $(wildcard $1*), $(call rwildcard,$d/,$2) \
                                $(filter $(subst *,%,$2), $d))
        ifeq ($(SOURCES),)
            SOURCES := $(call rwildcard, $(SRC_PATH)/, *.$(SRC_EXT))
        endif
OBJECTS = $(SOURCES:$(SRC_PATH)/%.$(SRC_EXT)=$(BUILD_PATH)/%.o)
DEPS = $(OBJECTS:.o=.d)

我试图将其修改为:

SRC_EXT = cpp c
SOURCES = $(shell find $(SRC_PATH)/ -name '*.$(CPP_EXT)' -o -name '*.$(C_EXT)' -printf '%T@\t%p\n' \
                    | sort -k 1nr | cut -f2-)
# fallback in case the above fails
rwildcard = $(foreach d, $(wildcard $1*), $(call rwildcard,$d/,$2) \
                        $(filter $(subst *,%,$2), $d))
ifeq ($(SOURCES),)
    SOURCES := $(call rwildcard, $(SRC_PATH)/, *.$(SRC_EXT))
endif

但是我不确定如何使用OBJECTS指令使其与多个扩展一起使用:

OBJECTS = $(SOURCES:$(SRC_PATH)/%.$(SRC_EXT)=$(BUILD_PATH)/%.o)

有人可以帮忙吗?

谢谢

首先,将.cpp替换为.o ,然后将其余的.c替换为.o

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM