premake 生成makefile(二)

1.执行premake4指令生成.make文件

# GNU Make project makefile autogenerated by Premake
ifndef config
  config=debug
endif

ifndef verbose
  SILENT = @
endif

CC = gcc
CXX = g++
AR = ar

ifndef RESCOMP
  ifdef WINDRES
    RESCOMP = $(WINDRES)
  else
    RESCOMP = windres
  endif
endif

ifeq ($(config),debug)
  OBJDIR     = obj/Debug
  TARGETDIR  = .
  TARGET     = $(TARGETDIR)/hello_world
  DEFINES   += -DDEBUG
  INCLUDES  +=
  ALL_CPPFLAGS  += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
  ALL_CFLAGS    += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -g
  ALL_CXXFLAGS  += $(CXXFLAGS) $(ALL_CFLAGS)
  ALL_RESFLAGS  += $(RESFLAGS) $(DEFINES) $(INCLUDES)
  ALL_LDFLAGS   += $(LDFLAGS)
  LDDEPS    +=
  LIBS      += $(LDDEPS)
  LINKCMD    = $(CXX) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
  define PREBUILDCMDS
  endef
  define PRELINKCMDS
  endef
  define POSTBUILDCMDS
  endef
endif

ifeq ($(config),release)
  OBJDIR     = obj/Release
  TARGETDIR  = .
  TARGET     = $(TARGETDIR)/hello_world
  DEFINES   += -DNDEBUG
  INCLUDES  +=
  ALL_CPPFLAGS  += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES)
  ALL_CFLAGS    += $(CFLAGS) $(ALL_CPPFLAGS) $(ARCH) -O2
  ALL_CXXFLAGS  += $(CXXFLAGS) $(ALL_CFLAGS)
  ALL_RESFLAGS  += $(RESFLAGS) $(DEFINES) $(INCLUDES)
  ALL_LDFLAGS   += $(LDFLAGS) -s
  LDDEPS    +=
  LIBS      += $(LDDEPS)
  LINKCMD    = $(CXX) -o $(TARGET) $(OBJECTS) $(RESOURCES) $(ARCH) $(ALL_LDFLAGS) $(LIBS)
  define PREBUILDCMDS
  endef
  define PRELINKCMDS
  endef
  define POSTBUILDCMDS
  endef
endif

OBJECTS := \
        $(OBJDIR)/hello_world.o \

RESOURCES := \

SHELLTYPE := msdos
ifeq (,$(ComSpec)$(COMSPEC))
  SHELLTYPE := posix
endif
ifeq (/bin,$(findstring /bin,$(SHELL)))
  SHELLTYPE := posix
endif

.PHONY: clean prebuild prelink

all: $(TARGETDIR) $(OBJDIR) prebuild prelink $(TARGET)
        @:

$(TARGET): $(GCH) $(OBJECTS) $(LDDEPS) $(RESOURCES)
        @echo Linking hello_world
        $(SILENT) $(LINKCMD)
        $(POSTBUILDCMDS)

$(TARGETDIR):
        @echo Creating $(TARGETDIR)
ifeq (posix,$(SHELLTYPE))
        $(SILENT) mkdir -p $(TARGETDIR)
else
        $(SILENT) mkdir $(subst /,\\,$(TARGETDIR))
endif

$(OBJDIR):
        @echo Creating $(OBJDIR)
ifeq (posix,$(SHELLTYPE))
        $(SILENT) mkdir -p $(OBJDIR)
else
        $(SILENT) mkdir $(subst /,\\,$(OBJDIR))
endif

clean:
        @echo Cleaning hello_world
ifeq (posix,$(SHELLTYPE))
        $(SILENT) rm -f  $(TARGET)
        $(SILENT) rm -rf $(OBJDIR)
else
        $(SILENT) if exist $(subst /,\\,$(TARGET)) del $(subst /,\\,$(TARGET))
        $(SILENT) if exist $(subst /,\\,$(OBJDIR)) rmdir /s /q $(subst /,\\,$(OBJDIR))
endif

prebuild:
        $(PREBUILDCMDS)

prelink:
        $(PRELINKCMDS)

ifneq (,$(PCH))
$(GCH): $(PCH)
        @echo $(notdir $<)
        $(SILENT) $(CXX) -x c++-header $(ALL_CXXFLAGS) -MMD -MP $(DEFINES) $(INCLUDES) -o "$@" -MF "$(@:%.gch=%.d)" -c "$<"
endif

$(OBJDIR)/hello_world.o: hello_world.cpp
        @echo $(notdir $<)
        $(SILENT) $(CXX) $(ALL_CXXFLAGS) $(FORCE_INCLUDE) -o "$@" -MF $(@:%.o=%.d) -c "$<"

-include $(OBJECTS:%.o=%.d)
ifneq (,$(PCH))
  -include $(OBJDIR)/$(notdir $(PCH)).d
endif

 

2.执行premake4指令生成Makefile文件

# GNU Make solution makefile autogenerated by Premake
# Type "make help" for usage help

ifndef config
  config=debug
endif
export config

PROJECTS := hello_world

.PHONY: all clean help $(PROJECTS)

all: $(PROJECTS)

hello_world: 
        @echo "==== Building hello_world ($(config)) ===="
        @${MAKE} --no-print-directory -C . -f hello_world.make

clean:
        @${MAKE} --no-print-directory -C . -f hello_world.make clean

help:
        @echo "Usage: make [config=name] [target]"
        @echo ""
        @echo "CONFIGURATIONS:"
        @echo "   debug"
        @echo "   release"
        @echo ""
        @echo "TARGETS:"
        @echo "   all (default)"
        @echo "   clean"
        @echo "   hello_world"
        @echo ""
        @echo "For more information, see http://industriousone.com/premake/quick-start"

 通过Makefile文件知道

ifndef config
  config=debug
endif

如果在make时,没有定义config,则默认为debug模式。

posted @ 2019-09-18 14:54  N_zero  阅读(393)  评论(0)    收藏  举报