<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    Makefile中的wildcard和patsubst

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接 makefile 里的函數跟它的變量很相似——使用的時候,你用一個 $ 符號跟開括號,函數名,空格后跟一列由逗號分隔的參數,最后用關括號結束。    例如,在 GNU Make 里有一個叫 'wildcard' 的函數,它有一個參數,功能是展開成一列所有符合由其參數描述的文件名,文件間以空格間隔。    你可以像下面所示使用這個命令: 
       
    SOURCES = $(wildcard *.c) 
       
    這行會產生一個所有以 '.c' 結尾的文件的列表,然后存入變量 SOURCES 里。當然你不需要一定要把結果存入一個變量。 
    另一個有用的函數是 patsubst ( patten substitude, 匹配替換的縮寫)函數。它需要3個參數——第一個是一個需要匹配的式樣,第二個表示用什么來替換它,第三個是一個需要被處理的由空格分隔的字列。例如,處理那個經過上面定義后的變量, 
       
    OBJS = $(patsubst %.c,%.o,$(SOURCES)) 
       
    這行將處理所有在 SOURCES 字列中的字(一列文件名),如果它的結尾是 '.c' ,就用 '.o' 把 '.c'取代。注意這里的 % 符號將匹配一個或多個字符,而它每次所匹配的字串叫做一個‘柄’(stem) 。 在第二個參數里,
    %被解讀成用第一參數所匹配的那個柄。

    例子:

    include /usr/local/AFEPack/Make.global_options
     
    source = $(wildcard *.cpp)
    object = $(patsubst %.cpp, %.o, $(source))
    LDFLAGS += -L/usr/local/AFEPack/library/lib -lAFEPack
     
    all : main
     
    %.o : %.cpp
         $(CXX) -c -o $@ $< $(CXXFLAGS)
     
    main : $(object)
         $(CXX) -o $@ $(object) $(LDFLAGS) $(LIBS)
     
    clean :
         -rm -rf $(object)
         -rm -rf main
         -rm -f *.[nes]
         -rm -f *.dx
     
       .PHONY : default clean
    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全