<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寫法

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    原文地址:blog.csdn.net/ghostyu/article/details/7755177

    1、目標名稱,擺脫手動設置目標名稱

    [cpp] view plaincopy  
    1. TARGET = $(notdir $(CURDIR))  
    2. all:$(TARGET)  
    3.     CMD....  

    $(CURDIR) 表示Makfile當前目錄全路徑

    $(notdir $(path)) 表示把path目錄去掉路徑名,只留當前目錄名
    這樣就可以得到Makefile當前目錄名稱,用目錄名作為目標程序名是一個不錯的選擇

    2、使用include,把所有Makefile共享的設置包含進來

    [cpp] view plaincopy  
    1. BASE_DIR = /root/DM36x  
    2. include $(BASE_DIR)/Rules.make  
    3.   
    4. XDC_PATH = $(DMAI_INSTALL_DIR)/packages  
    [cpp] view plaincopy  
    1. DMAI_INSTALL_DIR在Rules.make中已經設置過,這樣,需要使用DMAI_INSTALL_DIR變量的時候只要include 這個Rules.make接可以了  

    3、遍歷遍歷所有特定的源文件

    [cpp] view plaincopy  
    1. SOURCES = $(wildcard *.c)  
    2. HEADERS = $(wildcard *.h)  

    如果當前目錄先有 main.c  func.c  func.h 

    這樣SOURCES變量就等于main.c  func.c

    HEADERS變量就等于func.h

    這樣就每次添加源文件后 就不需要重新修改makefile了

    4、替換文件名稱

    [cpp] view plaincopy  
    1. OBJFILES = $(SOURCES:%.c=%.o)  

    如果SOURCES等與3中的main.c和func.c

    這樣OBJFILES就等于main.o func.o 

    同樣擺脫了手動修改編譯的中間文件名

    5、交叉編譯設置

    [cpp] view plaincopy  
    1. VERBOSE = @  
    2. COMPILE.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c  
    3. LINK.c = $(VERBOSE) $(MVTOOL_PREFIX)gcc $(LD_FLAGS)  

     

    6、編譯

    [cpp] view plaincopy  
    1. $(OBJFILES):    %.o: %.c $(HEADERS)   
    2.   
    3.     @echo Compiling $@ from $<..  
    4.   
    5.     $(COMPILE.c)  -o $@ $<  

    7、

    [cpp] view plaincopy  
    1. install:    $(if $(wildcard $(TARGET)), install_$(TARGET))  
    2. install_$(TARGET):  
    3.     @install -d $(EXEC_DIR)  
    4.     @install $(TARGET) $(EXEC_DIR)  
    5.     @install $(TARGET).txt $(EXEC_DIR)  
    6.     @echo  
    7.     @echo Installed $(TARGET) binaries to $(EXEC_DIR)..  

    先判斷當前目錄是否有$(TARGET),如果有,就執行偽目標install_$(TARGET),這個展開了就相當于install_app,如果$(TARGET)等于app的話

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全