C++ 如何更改在Makefile中自动生成的命令的默认参数
假设项目中只有3个文件:a.h a.cpp main.cpp。我正在使用ubuntu 14.04 生成文件:C++ 如何更改在Makefile中自动生成的命令的默认参数,c++,makefile,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 CXXFLAGS=-Wall CXX=clang m:main.o a.o ${CXX} ${CXXSFLAGS} -o $@ $^ a.o:a.h main.o:a.h 问题是编译a.o时,它会生
CFLAG=-Wall
CC=clang
m:main.o a.o
${CC} ${CFLAG} -o $@ $^
a.o:a.h
main.o:a.h
CXXFLAGS=-Wall
CXX=clang
m:main.o a.o
${CXX} ${CXXSFLAGS} -o $@ $^
a.o:a.h
main.o:a.h
问题是编译a.o时,它会生成如下命令:
g++ -c -o a.o a.cpp
a.o:a.cpp a.h
${CC} ${CFLAG} -o $@ a.cpp
main.o:a.h main.cpp
${CC} ${CFLAG} -o $@ main.cpp
但我所期望的是:
clang -Wall -c -o a.o a.cpp
除了像这样重写Makefile,还有其他想法吗
g++ -c -o a.o a.cpp
a.o:a.cpp a.h
${CC} ${CFLAG} -o $@ a.cpp
main.o:a.h main.cpp
${CC} ${CFLAG} -o $@ main.cpp
如文献所记载,按惯例持有C++变量的变量为:代码> CXX<代码>未<代码> cc>代码>。code>CC用于C编译器
因此,添加一行:CXX=clang
应该能解决你的问题
然后我会将您对CC
的使用重构为CXX
,以保持一致性和常规性
使用Makefile:
CXXFLAGS=-Wall
CXX=clang
m:main.o a.o
${CXX} ${CXXSFLAGS} -o $@ $^
a.o:a.h
main.o:a.h
打电话给make给我:
$ make
clang -Wall -c -o main.o main.cpp
clang -Wall -c -o a.o a.cpp
clang -o m main.o a.o
在我将CFLAGS更改为CXXFLAGS后,它现在可以工作了,谢谢!