1

実行可能な 2 つの makefile を実行していますが、この問題が発生しました。make を実行するたびに (heuristica または otimo)、otimo が実行され、次に実行すると言った exe が実行されます (otimo を選択すると、2 が実行されます)。回)。Linux (Kubuntu 12.10) を使用しています。私は make run separate を使いたいのですが、一方を実行することを選択した場合、もう一方などを実行したくありません。誰かがそれについて私を助けることができますか? Makelfile コード:

# 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 つの単語にする必要があります。修正するには、ターゲットから「実行」を取り除くことができます。または、スペースの代わりにアンダースコアを使用できます。

例 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 に答える