我需要从同一组源代码和标题中生成七个二进制文件。必须使用相同的CFLAGS
编译所有代码。在我的问题中,CFLAGS
有7种替代方案:
CFLAGS=-O0
CFLAGS=-O1
CFLAGS=-O1 -no-vec
CFLAGS=-O2
CFLAGS=-O2 -no-vec
CFLAGS=-O3
CFLAGS=-O3 -no-vec
使用make
编译所有源代码的最短且最合适的方法是什么?
答案 0 :(得分:2)
我建议你从命令行使用overriding变量CFLAGS
对于这种特殊情况,shell命令集如下所示:
make CFLAGS=-O0; mv binary binary1; make clean;
make CFLAGS=-O1; mv binary binary2; make clean;
make CFLAGS=-O1\ -no-vec; mv binary binary3; make clean;
make CFLAGS=-O2; mv binary binary4; make clean;
make CFLAGS=-O2\ -no-vec; mv binary binary5; make clean;
make CFLAGS=-O3; mv binary binary6; make clean;
make CFLAGS=-O3\ -no-vec; mv binary binary7; make clean;
这将允许您保持makefile简单,就像具有一个CFLAGS
值的情况一样。
但这种方法存在一个问题。为了创建七个二进制文件,每次调用make
后,您应该移动新创建的二进制文件。这可以通过引入来解决
TARGET
变量用于特定目标的名称。
make CFLAGS=-O0 TARGET=binary1; make clean;
make CFLAGS=-O1 TARGET=binary2; make clean;
make CFLAGS=-O1\ -no-vec TARGET=binary3; make clean;
make CFLAGS=-O2 TARGET=binary4; make clean;
make CFLAGS=-O2\ -no-vec TARGET=binary5; make clean;
make CFLAGS=-O3 TARGET=binary6; make clean;
make CFLAGS=-O3\ -no-vec TARGET=binary7; make clean;