1

我正在运行一个两个可执行的makefile,我遇到了这个问题:每次我执行make run(启发式或otimo)时,它都会运行otimo,然后运行我说过要运行的exe(如果我选择otimo,那么它会运行2次)。我正在使用 Linux(Kubuntu 12.10)。我想单独使用 make run,如果我选择运行一个,我不想运行另一个或类似的东西。有人可以帮我吗?生成文件代码:

# Lista dos objetos:
OBJS = main.o grafo.o circulo.o arquivos.o Lista.o 

# Nome dos executáveis:
MAIN1 = tp2h 
MAIN2 = tp2o

# Argumentos para execução dos programas:
ARGS  = input.txt output.txt
ARGS2 = input.txt output.txt

# Especifica o compilador:
CC = gcc

# Especifica as opções do compilador:
CFLAGS = -Wall -pg -g3

# Compilação dos programas:
all: $(MAIN1) $(MAIN2)

$(MAIN1): $(OBJS)
    @$(CC) $(CFLAGS) $(OBJS) -lm -o $(MAIN1)
$(MAIN2): $(OBJS)
    @$(CC) $(CFLAGS) $(OBJS) -lm -o $(MAIN2)
%.o: %.c %.h
    @$(CC) $(CFLAGS) $< -c 

# Execução dos programas:

run heuristica:
    ./$(MAIN1) $(ARGS)
run otimo:
    ./$(MAIN2) $(ARGS2)

# Remoção dos objetos pré-compilados:
clean: 
    rm *.o

感谢您提供任何帮助!

4

1 回答 1

1

问题是这些是您正在使用的多个单词“目标”。Makefile 目标应该是一个单词。要更正,您可以将“跑”出目标。或者,您可以使用下划线代替空格。

示例 1:

# Execução dos programas:

heuristica:
    ./$(MAIN1) $(ARGS)
otimo:
    ./$(MAIN2) $(ARGS2)

示例 2:

# Execução dos programas:

run_heuristica:
    ./$(MAIN1) $(ARGS)
run_otimo:
    ./$(MAIN2) $(ARGS2)
于 2013-05-21T20:41:31.827 回答