首页 > 解决方案 > 如何将目标文件复制到 Makefile 中的子文件夹?

问题描述

在这个 Makefile - 我想将编译后的 $(TGT) 二进制文件复制到同一目录中的子文件夹(test)。如何在 Makefile 中包含已编译目标文件的复制命令?

    CC     = g++
    CFLAGS = -ansi -std=c++11 
    LIBS = -L/usr/lib -lstdc++

    DEPS = foo.cpp
    OBJ = foo.o

    TGT+=foo

    %.o: %.cc $(DEPS)
            $(CC) -c $< $(CFLAGS) -o $@


    all: $(TGT)

    $(TGT): $(OBJ)
            $(CC) $^ $(CFLAGS) $(LIBS) -o $@

    # TODO: Need to include the copy command for copying TGT to test folder.

    clean:
            rm -f *.o $(TGT)

目前文件夹结构是-

<foo>
  Makefile
  foo.cpp
  foo.h
  <test>
       <..Need "foo" inside this folder>

标签: makefile

解决方案


有什么原因你不能只改变配方来复制文件吗?

改变:

$(TGT): $(OBJ)
        $(CC) $^ $(CFLAGS) $(LIBS) -o $@

到:

$(TGT): $(OBJ)
        $(CC) $^ $(CFLAGS) $(LIBS) -o $@
        cp $@ test

推荐阅读