Как установить разные флаги для нескольких исходных файлов в Makefile?
Я хотел бы скомпилировать код, который состоит из нескольких файлов.cpp. Каждый файл я хотел бы скомпилировать с различными флагами (например, -fopenmp для распараллеливания). Первая цель - ссылка между выходными файлами в универсальный исполняемый файл.
Например
exec: $(OBJS)
$(CC) -I$(INCLDIR) -I$(INCLDIR) $(CFLAGS) -o exec $(OBJS) -L$(LIBPATH) $(LDFLAGS)
Давайте предположим, что в объекты включены некоторые цели, подобные этим:
obj1.o: obj1.cpp $(INCLFILE)
$(CC) $(CFLAGS1) -c obj1.cpp -o obj1.o
obj2.o: obj2.cpp $(INCLFILE)
$(CC) $(CFLAGS2) -c obj2.cpp -o obj2.o
с CFLAGS1 или CFLAGS2, являющимися -fopenmp. Даже если я установлю CFLAGS1 или CFLAGS2 равным -fopenmp, но не установлю CFLAGS равным -fopenmp, появляется ошибка о том, что не найдены соответствующие файлы. Когда я устанавливаю CFLAGS равным -fopenmp, проблема исчезает. Итак, должны ли все флаги, используемые какой-либо функцией, входить в основную исполняемую цель? И то, конечно, используется в отдельном объекте?