我想知道为什么 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
... 我知道我可以通过 VPATH 和 VPATH 指令来编写 Makefile 来简化这个过程。
但是,在复杂的构建环境中,这需要做大量的工作。
我也可以用
gcc -c file1.c file2.c file3.c
但是当我使用这种方法时,我的 srcdir 之后就会充满了.o 垃圾。
因此,我认为具有—— outdir 语义的选项将非常有用。
你有什么看法?
编辑 : 我们的 Makefile 以这样一种方式编写:。O 文件实际放入 builddir/obj。但我只是想知道是否有更好的方法。
EDIT : 有几种方法会给构建系统带来实现所需行为的负担(又名 Make、 CMake 等)。但我认为它们都是 变通办法,因为 gcc 有缺陷(其他编译器也是如此)。