Добрый день. Нужно собрать большой проект, время компиляции которого целиком состовляет несколько десятков секунд, что при большом числе компиляций съедает кучу времени и нервов.
Написан Makefile, который принимает на входе несколько параметров из командной строки, например:
make project VAL=VAL1 или make project VAL=VAL2 VAL1 и VAL2 в программе используются как предпроцессорные условные дефайны (ifdef VAL1 или ifdef VAL2).
Когда собираем проект для одного из значеннией (например VAL1), то при повторной пересборке пересобираются только изменные файлы проекта, то что как раз нужно.
Однако если при пересборке указать VAL2, то возникают проблемы: физически файл проекта не изменялся, но ведь из-за дефайнов внутри него,код для VAL2 другой. Очищать объектники для VAL1 не хочется, ведь придется все собирать сначала.. и так при каждой смене значения. Есть ли какое-то решения для этих случаев.. пока кроме того что компилировать в разные директории или объектные файлы с разными именами в голову ничего не приходит. Если останавливаться на решение собирать в разные файлы, тогда например для VAL1, все объектные файлы будут носить имя *VAL1.o.. то как тогда заставить makefile срвнивать цель с ним, ведь в цели мы указывали *.o
Заранее спасибо за помощь, может немного сумбурно написанно, но если чтото не понятно готов подробно объяснить