2015-12-24 14 views
1

我知道這在Makefiles中有點不同尋常,但我真的很想這樣做。我想這樣做,如果我運行Makefile,它會打開程序(已經完成),但是如果沒有任何要做的事情,它也會運行:/。我怎樣才能做到這一點?如果什麼都不做,請檢查Makefie

的Makefile =

#Compiler to use 
CC = g++ 

#LUA STUFF 
LUAHOME = /usr/local/Cellar/lua/5.3.2/src 

#Boost Paths 
BOOST_LIB = /usr/local/Cellar/boost/1.59.0/lib 
BOOST_INCLUDE = /usr/local/Cellar/boost/1.59.0/include 

#Steam Paths 
STEAM_LIB = libs/steam/redistributable_bin/osx32 
STEAM_INCLUDE = libs/steam/public/steam 

#Flags for the compiler 
LFLAGS = -L$(LUAHOME) -I$(LUAHOME) -llua -L$(STEAM_LIB) -I$(STEAM_INCLUDE) -L$(BOOST_LIB) -I$(BOOST_INCLUDE) -lboost_system -lboost_filesystem -framework OpenGL -framework Cocoa -framework IOKit -framework CoreVideo -lglew -lglfw3 -w -o Relieved 
OFLAGS = -c -Wall 

#Name of the Compiled Program 
NAME = Relieved 

#All CPPs 
CPP = main.cpp jelly/lua_manager.cpp jelly/keysManager.cpp 

#Objects 
OBJECTS = $(CPP:.cpp=.o) 

all: $(CPP) $(NAME) 

$(NAME): $(OBJECTS) 
    $(CC) $(LFLAGS) $(OBJECTS) -o [email protected] 

    ./$(NAME) 

.cpp.o: 
    $(CC) $(OFLAGS) $< -o [email protected] 

clean: 
    rm $(OBJECTS) $(NAME) 

回答

2

你會對此有些錯誤的方式。如果沒有什麼可以做的話,那麼什麼都不會做。

把命令運行在二進制的構建配方內沒有幫助。

您的目標是制定一個始終需要構建的目標,並將運行命令放在那裏。儘管您可以使用任何不存在的文件,但關鍵字PHONY可以使這些僞目標更加高效,因爲那樣make甚至不必檢查文件是否存在。

all: RUN-IT 

.PHONY: RUN-IT 

RUN-IT : $(NAME) 
# run the program here, remember to use TABs when defining build steps