c - "No rule to make target" althoug the rule exists -
i have issue makefile says no rule make target /obj/%.o, needed /bin/exec. stop. understand have it:
# define c compiler use cc = gcc # define compile-time flags # add -ddebug debug mode cflags = -wall # define directories containing header files includes = -i/includes # define src folder src_folder = /src # define src files src = $(wildcard $(src_folder)/%.cpp) # define object folder obj_folder = /obj # define obj files obj = $(patsubst %.cpp, %.o, $(src)) # define binary path bin_folfer = /bin # define executable file main = $(bin_folfer)/exec # compile object files $(obj_folder)/%.o: $(src_folder)/%.cpp $(cc) $(cflags) $< -o $@ # build $(main): $(obj_folder)/%.o $(cc) $(cflags) $^ -o $@ # cleaning .phony: clean clean: rm -f $(obj_folder)/%.o i sorry possible major errors in makefile, first makefile. doing wrong?
$(main): $(obj_folder)/%.o requests %.o exactly. % not act pattern here, because not appear on both sides of rule. need use $(obj) variable there. first need fixed, because replacing extension, need replace directory too.
finish
$(obj)variable (as lutin said) (ok, modified bit; presume want direct descendants of directory):src = $(wildcard $(src_folder)/*.cpp) obj = $(patsubst $(src_folder)/%.cpp, $(obj_folder)/%.o, $(src))fix rule use
$(obj)variable:$(main): $(obj)oh, , don't want
src_folder,obj_folder,bin_folderstart/puts them in filesystem root it's not project lives. , patterns above should not end slash either.
Comments
Post a Comment