Мне интересно, почему gcc/g++ не имеет возможности поместить сгенерированные объектные файлы в указанный каталог.
Например:
mkdir builddir
mkdir builddir/objdir
cd srcdir
gcc -c file1.c file2.c file3.c **--outdir=**../builddir/objdir
Я знаю, что это можно добиться с помощью отдельных опций -o, заданных компилятору, например:
gcc -c file1.c -o ../builddir/objdir/file1.o
gcc -c file2.c -o ../builddir/objdir/file2.o
gcc -c file3.c -o ../builddir/objdir/file3.o
... и я знаю, что я могу писать Makefiles через директивы VPATH и vpath, чтобы упростить это.
Но это большая работа в сложной среде сборки.
Я мог бы также использовать
gcc -c file1.c file2.c file3.c
Но когда я использую этот подход, мой srcdir полон .o мусора впоследствии.
Итак, я думаю, что вариант с семантикой -outdir будет очень полезен.
Каково ваше мнение?
EDIT: наши Make файлы написаны так, что файлы .o фактически помещаются в builddir/obj. Но я просто задаюсь вопросом, может ли быть лучший подход.
РЕДАКТИРОВАТЬ. Существует несколько подходов, которые ставят бремя для достижения желаемого поведения в системе сборки (также как Make, CMake и т.д.). Но я рассматриваю их как обходные пути для слабости gcc (и других компиляторов тоже).