【问题标题】:Binary for each CFLAGS alternative每个 CFLAGS 备选方案的二进制文件
【发布时间】:2014-05-27 04:16:10
【问题描述】:

我需要七个由同一组源代码和标头组成的二进制文件。所有代码都必须使用相同的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

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

【问题讨论】:

    标签: makefile compiler-flags


    【解决方案1】:

    从命令行覆盖变量 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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-04-22
      • 2017-05-08
      • 2018-06-12
      相关资源
      最近更新 更多