繁体   English   中英

Makefile执行多个程序(C / C ++)

[英]Makefile to execute multiple programs (c/c++)

我是makefile的新手,我已经创建了规则(run1,run2等)以分别执行c和c ++对象(单独的编译成功完成c / c ++,也需要分别执行),但似乎无法按预期运行,可以任何人都告诉它出了错以及如何纠正它

TARGET_EXEC ?=

BUILD_DIR ?= .
SRC_DIRS ?= .

SRCS := $(shell find $(SRC_DIRS) -name *.cpp -or -name *.c)
OBJS := $(SRCS:%=$(BUILD_DIR)/%.o)

INC_DIRS := $(shell find $(SRC_DIRS) -type d)
INC_FLAGS := $(addprefix -I,$(INC_DIRS))

CC = gcc
CXX = g++
CFLAGS = -g -Wall
CPPFLAGS = -g -lws2_32 -Wno-write-strings

.PHONY: all run1 run2 run3 clean
all: $(BUILD_DIR)/$(TARGET_EXEC)

$(BUILD_DIR)/$(TARGET_EXEC): $(OBJS)
    @echo "Build completed"

# c source
$(BUILD_DIR)/%.c.o: %.c
    @echo "Compiling C sources"
    @$(CC) $(CFLAGS) $< -o $(basename $(<F))
    @echo "Compiled successfully"

# c++ source
$(BUILD_DIR)/%.cpp.o: %.cpp
    @echo "Compiling C++ sources"
    @$(CXX) -o $(basename $(<F)) $(CXXFLAGS) $< $(CPPFLAGS)
    @echo "Compiled successfully"

clean:
    @echo "Cleaning"
    @$(RM) -r *.exe
    @echo "Cleaned up"

run1: $(OBJS)
$(OBJS)=$(SRCS)
$(SRC_DIRS)/%.c.o: %.c
    @echo "from run1"
    ./$(basename $(<F)) ${ARGS}

run2: $(OBJS)
$(OBJS)=$(SRCS)
$(SRC_DIRS)/%.cpp.o: %.cpp
    @echo "from run2"
    ./$(basename $(<F)) ${ARGS}

使用的命令: make run1

输出:

    from run1
     -> execution
    from run2
     -> execution

预期产量

    from run1
--> execution of exe created

此外,我正在尝试传递我从链接引用的参数以继续运行。 例如:

make ARG="-p TCP -n 127.0.0.1 -e 10006 -l 1" run2 

还请让我知道是否可以顺利进行。

看规则:

run1: $(OBJS)
$(OBJS)=$(SRCS)
$(SRC_DIRS)/%.c.o: %.c
    @echo "from run1"
    ./$(basename $(<F)) ${ARGS}

第一行说run1依赖于$(OBJS)但没有任何明确的食谱。 下一行进行分配,最后一行为所有带有某些配方的.co文件定义一个模式规则。 这些配方与run1 关联。 运行make run1 ,它将构建依赖项( $(OBJS) ),其中包括所有cpp.oco文件。 因此,它将运行两个模式规则,并输出两条线。

我想你想要做的,就是分裂$(OBJS)$(C_OBJS)$(CPP_OBJS)然后有run1依赖于一组,和run2依赖于其他,然后有$(TARGET_EXEC)取决于两者。

暂无
暂无

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

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