我参加了一门 CPP 语言课程,我试图了解 makefile 中“subst”的使用(一般情况)以及该 makefile 中的具体用途。
我尝试用谷歌搜索“subst”的用法,但没有找到。
CXX=clang++-5.0
RM=rm -f
CPPFLAGS=-std=c++17
ifndef MAIN
MAIN=./main.cpp
endif
MAINEXECUTABLE=$(subst .cpp,,$(MAIN)).exe
SOURCES=$(MAIN)
all: $(MAINEXECUTABLE)
$(MAINEXECUTABLE)
$(MAINEXECUTABLE): $(SOURCES) $(HEADERS)
$(CXX) $(CPPFLAGS) $(SOURCES) -o $(MAINEXECUTABLE)
clean:
$(RM) *.exe a.out *.class *.ppm
Run Code Online (Sandbox Code Playgroud)
该 makefile 是通用 makefile,可用于编译任何单个 cpp 文件。
Sto*_*ica 11
来自GNU make参考手册:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\n\n$(subst from,to,text)\n对文本text执行文本替换:每次出现的\n from都被替换为to。结果将替换函数调用。例如,
\n\nRun Code Online (Sandbox Code Playgroud)\n\n$(subst ee,EE,feet on the street)\n将字符串 \xe2\x80\x98fEEt 替换为 strEEt\xe2\x80\x99。
\n
将其应用到您的案例中,函数调用将查看主文件名并删除.cpp扩展名(通过用空字符串替换它)。然后,它将.exe扩展名添加到现在无扩展名的文件名中。
| 归档时间: |
|
| 查看次数: |
9545 次 |
| 最近记录: |