0

SO に関する別の質問では、単一のターゲットに対する素晴らしくエレガントな makefile について説明しています。

CXX = g++                     # compiler
CXXFLAGS = -g -Wall -MMD      # compiler flags
OBJECTS = x.o y.o z.o         # object files forming executable
DEPENDS = ${OBJECTS:.o=.d}    # substitutes ".o" with ".d"
EXEC = a.out                  # executable name

${EXEC} : ${OBJECTS}          # link step
    ${CXX} ${OBJECTS} -o ${EXEC}

-include ${DEPENDS}           # copies files x.d, y.d, z.d (if they exist)

私の質問は、これを複数のターゲットにどのように適応させることができるでしょうか?

4

2 に答える 2

1

あなたのソリューションは良さそうに見えますが、多くのターゲットがある場合、これはスケーリングが少し簡単です:

EXECS = exec_x exec_y

exec_x: a.o b.o c.o
exec_y: d.o e.o f.o

$(EXECS):
    ${LINK}
于 2012-12-21T15:25:48.407 に答える
0

うまくいくように見える解決策をハックしましたが、これが適切な手法であるかどうか知りたいです。

CXX = g++                     # compiler
CXXFLAGS = -g -Wall -MMD      # compiler flags
LINK = ${CXX} $^ -o $@        # link step

exec_x: a.o b.o c.o
    ${LINK}

exec_y: d.o e.o f.o
    ${LINK}

-include *.d
于 2012-12-21T14:04:50.053 に答える