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

how to change default parameter of commands that generate automatically in Makefile

本文关键字:命令 默认 参数 自动生成 何更改 Makefile      更新时间:2023-10-16

假设项目中只有三个文件:a.h a.p p main.cpp。我用的是ubuntu 14.04

Makefile:

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

在GNU Make手册中,按照约定保存c++编译器的变量是CXX而不是CCCC为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