makefile для компиляции нескольких источников с разными флагами - PullRequest
3 голосов
/ 26 ноября 2011

У меня есть следующий make-файл:

CC = gcc
SRC = source1.c
EXE = source1
FLAGS = -fopenmp

all: $(src)
$(CC) -o $(EXE) $(SRC) $(FLAGS)

clean:
rm $(EXE)

Как я могу изменить его так, чтобы я мог использовать несколько источников, некоторые из которых скомпилированы с флагом -fopenmp, а некоторые скомпилированы без.Большое спасибо.

Ответы [ 2 ]

5 голосов
/ 27 ноября 2011

Это должно помочь вам начать. Обратите внимание, как -fopenmp добавляется только для source2.c

CC=gcc
SRC=source1.c source2.c
OBJ=$(patsubst %.c,%.o,$(SRC))
EXE=source1
FLAGS= -g -O2

source2.o: FLAGS+=-fopenmp

all: $(EXE)

$(EXE): $(OBJ)
    $(CC) -o $@ $^ $(FLAGS)

%.o: %.c
    $(CC) -c -o $@ $^ $(FLAGS)

clean:
    rm $(EXE)$

Выход make -Bsn:

gcc -o source1.o source1.c -g -O2
gcc -o source2.o source2.c -g -O2 -fopenmp
gcc -o source1 source1.o source2.o -g -O2
0 голосов
/ 26 ноября 2011

Например, вы можете определить EXTFLAGS=$(FLAGS) -fopenmp и использовать EXTFLAGS для некоторых правил.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...