每个CFLAGS替代品的二进制

时间:2014-05-27 04:16:11

标签: makefile compiler-flags

我需要从同一组源代码和标题中生成七个二进制文件。必须使用相同的CFLAGS编译所有代码。在我的问题中,CFLAGS有7种替代方案:

  1. CFLAGS=-O0

  2. CFLAGS=-O1

  3. CFLAGS=-O1 -no-vec

  4. CFLAGS=-O2

  5. CFLAGS=-O2 -no-vec

  6. CFLAGS=-O3

  7. CFLAGS=-O3 -no-vec

  8. 使用make编译所有源代码的最短且最合适的方法是什么?

1 个答案:

答案 0 :(得分:2)

从命令行覆盖变量CFLAGS?

我建议你从命令行使用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;