如何更改在Makefile中自动生成的命令的默认参数

时间:2014-05-29 00:41:40

标签: c++ makefile

假设项目中只有3个文件:a.h a.cpp main.cpp。我正在使用ubuntu 14.04

生成文件:

CFLAG=-Wall
CC=clang

m:main.o a.o
  ${CC} ${CFLAG} -o $@ $^

a.o:a.h   
main.o:a.h

问题是在编译a.o时,它会生成如下命令:

g++ -c -o a.o a.cpp

但我的期望是:

clang -Wall -c -o a.o a.cpp

除了重写Makefile之外还有其他任何想法:

a.o:a.cpp a.h
   ${CC} ${CFLAG} -o $@ a.cpp
main.o:a.h main.cpp
   ${CC} ${CFLAG} -o $@ main.cpp

1 个答案:

答案 0 :(得分:1)

GNU Make manual中所述,按惯例保存C ++编译器的变量是CXX而不是CCCC用于C编译器。

添加以下行:

CXX=clang

应该解决你的问题。

然后,我会重构您对CC的使用,以便保持一致和传统。

使用Makefile:

CXX

致电make让我:

CXXFLAGS=-Wall
CXX=clang

m:main.o a.o
        ${CXX} ${CXXSFLAGS} -o $@ $^

a.o:a.h
main.o:a.h