Problems with Execution

This is a make file that I wrote with the current goal of turning all C ++ files into a directory into object files. My problem is that it always executes g ++ first and then any other commands.

CC=g++
CPPFLAGS=`pkg-config --cflags --libs gtkmm-3.0`
SRCS=$(wildcard classes/source/*.cc)
PROGS=$(patsubst %.cc,%,$(SRCS))
CLASS_HEADERS=classes/
all: $(PROGS)
    mkdir -p build/release/objs 
%: %.cc
    $(CC) -I$(CLASS_HEADERS) -c $< -o build/release/objs/$(@F).o $(CPPFLAGS)

leads to:

g++ -Iclasses/ -c classes/source/helloworld.cc -o build/release/objs/helloworld.o `pkg-config --cflags --libs gtkmm-3.0`
mkdir -p build/release/objs 

thank

+4
source share
3 answers

Recipes for the goal are executed after any preconditions, so when executed allmake will go through $(PROGS)before starting mkdir.

build/release/objs , , . , , .

(. 2) , . .

CXXFLAGS := $(shell pkg-config --cflags --libs gtkmm-3.0)
CPPFLAGS := -Iclasses/
SRCS     := $(wildcard classes/source/*.cc)
OBJS     := $(SRCS:classes/source/%.cc=build/release/objs/%.o)

.PHONY: all
all: $(OBJS)

$(OBJS): build/release/objs/%.o: classes/source/%.cc | build/release/objs
    $(COMPILE.cc) $(OUTPUT_OPTION) $<

build/release/objs: ; mkdir -p $@

: -libs gtkmm-3.0, , , libs .

+1

- mkdir . -p, .

%: %.cc
   mkdir -p build/release/objs
   $(CC) -I$(CLASS_HEADERS) -c $< -o build/release/objs/$(@F).o $(CPPFLAGS)

-j GNU make:. , mkdir all. , ( mkdir ). , . , make :

all: do_mkdir
   $(MAKE) $(progs)

do_mkdir:
   mkdir -p build/release/objs
+3

:

......
OBJ_DIR := build/release/objs

all: create_obj_dir $(PROGS)

create_obj_dir:
    mkdir -p  $(OBJ_DIR)

%: %.cc
    $(CC) -I$(CLASS_HEADERS) -c $< -o $(OBJ_DIR)/$(@F).o $(CPPFLAGS)
+1

All Articles