栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

makefile 传递宏

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

makefile 传递宏

方法1:

makefield如下,为了使宏生效在命令行编译时 执行make  "CXXFLAG += -DDEBUG",但这样绿色的CXXFLAG会生效,CXXFLAG = -Wall -g不会生效

CXX = g++
ifdef CXXFLAG
CXXFLAG +=
else
CXXFLAG = -Wall -g
#CXXFLAG += -DDEBUG
endif

LDFLAGS += 
INCS = -I../inc 
SRCS = ./

BUILDDIR = ./
LIBS  += -L../lib/
MAINSRCS = $(foreach dir,${shell find $(SRCS) -type d},$(wildcard ${dir}/*.cpp))
MAINOBJS = $(patsubst %.cpp, $(BUILDDIR)%.o, $(notdir $(MAINSRCS)))
MAINAPPS = $(BUILDDIR)/test.exe
TARGET = $(BUILDDIR) $(MAINAPPS)

VPATH += $(shell find $(SRCS) -type d)

#test:
#    echo $(INCS)
#    echo $(MAINSRCS)
#    echo $(MAINOBJS)
#    echo $(VPATH)

all: $(TARGET)
    #cp ./ $(BUILDDIR)
$(BUILDDIR):
    mkdir -p $(BUILDDIR)

$(MAINAPPS): $(MAINOBJS)
    $(CXX) $(MAINOBJS) $(LIBS) $(LDFLAGS) -o $@
    
$(BUILDDIR)/%.o : %.cpp
    $(CXX) -c $(INCS)  $(CXXFLAG) $< -o $@

clean:
    rm -rf *.o
    rm -rf *.exe
    rm -rf *.dll

方法2:

makefield如下,为了使宏生效在命令行编译时 执行make  SW_DEBUG=TRUE

CXX = g++
ifdef CXXFLAG
CXXFLAG +=
else
CXXFLAG = -Wall -g
endif

ifeq ($(SW_DEBUG), TRUE)
CXXFLAG += -DDEBUG
else
CXXFLAG += 
endif

LDFLAGS += 
INCS = -I../inc 
SRCS = ./

BUILDDIR = ./
LIBS  += -L../lib/
MAINSRCS = $(foreach dir,${shell find $(SRCS) -type d},$(wildcard ${dir}/*.cpp))
MAINOBJS = $(patsubst %.cpp, $(BUILDDIR)%.o, $(notdir $(MAINSRCS)))
MAINAPPS = $(BUILDDIR)/test.exe
TARGET = $(BUILDDIR) $(MAINAPPS)

VPATH += $(shell find $(SRCS) -type d)

#test:
#    echo $(INCS)
#    echo $(MAINSRCS)
#    echo $(MAINOBJS)
#    echo $(VPATH)

all: $(TARGET)
    #cp ./ $(BUILDDIR)
$(BUILDDIR):
    mkdir -p $(BUILDDIR)

$(MAINAPPS): $(MAINOBJS)
    $(CXX) $(MAINOBJS) $(LIBS) $(LDFLAGS) -o $@
    
$(BUILDDIR)/%.o : %.cpp
    $(CXX) -c $(INCS)  $(CXXFLAG) $< -o $@

clean:
    rm -rf *.o
    rm -rf *.exe
    rm -rf *.dll
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675685.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号