如何使用makefile构建一个项目的多个变体?

如何使用makefile构建一个项目的多个变体?,makefile,nmake,Makefile,Nmake,我从事一个项目,该项目通常在多个操作系统和多种配置中构建和运行。我使用两个编译器:icc和gcc,以及这些编译器的多组参数。这可以为我提供一个项目构建的多种变体 我想做的是: 使用带有一组参数的icc或gcc编译器编译项目 在新生成之前和之后测试应用程序的性能> 比较获得的结果 为另一组参数编译项目,并重复前面的步骤 有人知道如何使用makefile很好地完成这项工作吗?您只需要根据需要级联您的make目标: 例如: 然而,对于这种工作,我宁愿使用一些构建自动化工具。。。我只知道Maven,

我从事一个项目,该项目通常在多个操作系统和多种配置中构建和运行。我使用两个编译器:icc和gcc,以及这些编译器的多组参数。这可以为我提供一个项目构建的多种变体

我想做的是:

  • 使用带有一组参数的icc或gcc编译器编译项目
  • 在新生成之前和之后测试应用程序的性能>
  • 比较获得的结果
  • 为另一组参数编译项目,并重复前面的步骤

有人知道如何使用makefile很好地完成这项工作吗?

您只需要根据需要级联您的make目标: 例如:

然而,对于这种工作,我宁愿使用一些构建自动化工具。。。我只知道Maven,但对于基于Makefile的构建,其他一些工具可能更适合。。。查看不同的选项,例如:

您必须详细说明步骤2和步骤3。“性能”是指速度、内存使用等吗?你想如何“比较”结果——只是验证它们是相同的,或者在某种意义上是相似的?好的测试线束可能非常简单,也可能非常复杂,这取决于您正在测试的内容。
# Assumed that $(CONFIGURATION_FILES) is a list of files, all named *.cfg
# There you store your set of arguments per step

#The main target 
all: $(CONFIGURATION_FILES)

#Procedure for each configuration-file
%.cfg: compile_icc compile_gcc test compare

compile_icc:
#DO whatever is necesarry

compile_gcc:
#DO whatever is necesarry

test:
#DO whatever is necesarry

compare:
#DO whatever is necesarry