【问题标题】:Check in Makefie if nothing is to be done [duplicate]如果什么都不做,请检查 Makefie [重复]
【发布时间】:2016-03-31 02:18:16
【问题描述】:

我知道这在 Makefile 中有点不寻常,但我真的很想这样做。我想这样做,如果我运行 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 $@

    ./$(NAME)

.cpp.o:
    $(CC) $(OFLAGS) $< -o $@

clean:
    rm $(OBJECTS) $(NAME)

【问题讨论】:

    标签: c++ makefile


    【解决方案1】:

    您的做法有些错误。如果没有什么可做的,那么什么都不会做。

    将运行程序的命令放在二进制文件的构建配方中没有帮助。

    您的目标是制作一个始终需要构建的目标,并将运行命令放在那里。虽然您可以使用任何不存在的文件,但关键字 PHONY 使此类伪目标更有效,因为 make 甚至不必检查文件是否存在。

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

    【讨论】:

      猜你喜欢
      • 2015-06-12
      • 2016-05-07
      • 2019-08-16
      • 2017-06-30
      • 2017-07-03
      • 2023-01-30
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多