我学习了CPP语言课程,并且试图了解makefile中“ subst”的用法(通常)以及该makefile中的特定用法。
我尝试用Google搜索“ 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
此makefile是通用的makefile,可用于编译任何单个cpp文件。
答案 0 :(得分:2)
摘自GNU make参考手册:
users = sorteddf['User'].unique() for user in users: print('Output for user {}'.format(user)) function(sorteddf[sorteddf.User == user])
对文本 text 进行文本替换:每次出现 from 替换为 to 。结果代替函数 呼叫。例如,
$(subst from,to,text)
替换字符串“ fEEt on the strEEt”。
将其应用于您的情况,函数调用会查看主文件名并剥离$(subst ee,EE,feet on the street)
扩展名(通过为其替换一个空字符串)。然后,将.cpp
扩展名添加到现在的无扩展名的文件名中。