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