假设项目中只有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
答案 0 :(得分:1)
如GNU Make manual中所述,按惯例保存C ++编译器的变量是CXX
而不是CC
。 CC
用于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