使用vpath的简单make文件无法正常工作

时间:2013-09-11 08:36:02

标签: c makefile

我用vpath编写了简单的makefile

COMMON_CFLAGS = -Wall -O2 -DA2CSCC=0
CFLAGS = $(COMMON_CFLAGS) -I/usr/include/ -I./ -std=gnu99 -g

VPATH = ./test_app

CC: LD_LIBRARY_PATH=./libs gcc

SRC: test.c

all: TARGET

TARGET:
      $(CC) $(CFLAGS) $(SRC) -o test

它给main提供了未定义的引用。

当我直接给出

TARGET:

       gcc test.c -o test
gcc  test.c TARGET
gcc: error: test.c: No such file or directory
gcc: error: TARGET: No such file or directory
gcc: fatal error: no input files
compilation terminated.

1 个答案:

答案 0 :(得分:3)

make将不会执行您的命令并使用基于VPATH的新版本替换任意字符串。如果您想使用VPATH,必须使用自动变量。只会重置自动变量。

这一点在GNU make手册中都得到了相当清楚的解释:http://www.gnu.org/software/make/manual/html_node/Recipes_002fSearch.html

您的makefile中还有其他各种问题。像这样改变你的规则:

all: test

test: $(SRC)
      $(CC) $(CFLAGS) $^ -o $@

请注意:创建名为test的程序从不是一个好主意。这是一个内置的shell,也是/usr/bin中的一个程序,它只会导致混乱。使用其他名称,例如mytest或类似名称。