了解makefile中的“ subst”关键字和特定行

时间:2019-06-02 10:54:24

标签: makefile

我学习了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文件。

1 个答案:

答案 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扩展名添加到现在的无扩展名的文件名中。