每个 CFLAGS 备选方案的二进制文件
Posted
技术标签:
【中文标题】每个 CFLAGS 备选方案的二进制文件【英文标题】:Binary for each CFLAGS alternative 【发布时间】:2014-05-27 04:16:10 【问题描述】:我需要七个由同一组源代码和标头组成的二进制文件。所有代码都必须使用相同的CFLAGS
编译。在我的问题中,CFLAGS
有 7 种替代方案:
CFLAGS=-O0
CFLAGS=-O1
CFLAGS=-O1 -no-vec
CFLAGS=-O2
CFLAGS=-O2 -no-vec
CFLAGS=-O3
CFLAGS=-O3 -no-vec
使用make
编译所有源代码的最短和最合适的方法是什么?
【问题讨论】:
【参考方案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;
【讨论】:
以上是关于每个 CFLAGS 备选方案的二进制文件的主要内容,如果未能解决你的问题,请参考以下文章