了解makefile中的make-command?

时间:2012-05-14 00:15:46

标签: makefile

我正在尝试修改makefile以交叉编译二进制文件。有问题的命令如下:

# GNU Make solution makefile autogenerated by Premake
# Type "make help" for usage help



ifndef config
  config=debug
endif
export config

PROJECTS := json openjaus openjaus-core openjaus-environment openjaus-mobility openjaus-manipulator openjaus-ugv Base Managed PingTest LargeMessageTest PdDemo GposDemo   GposClientDemo StillImageSensorDemo StillImageClientDemo

.PHONY: all clean help $(PROJECTS)

all: $(PROJECTS)

json:   
    @echo "==== Building json ($(config)) ===="
    @${MAKE} --no-print-directory -C .build -f json.make

可以看出,makefile有几个目标。它们都具有与'json'目标相同的结构。有问题的命令是

@${MAKE} --no-print-directory -C .build -f json.make

'$ {MAKE}'变量= make(我已用echo验证了这一点) -C做什么? .build做什么? 我很擅长-f json.make

另外,当我运行make时,json.make文件被创建编译文件并自行删除它,所以我无法访问该文件。

我修改有问题的命令时收到的错误是

==== Building json (debug) ====
make[1]: Nothing to be done for `/home/botbear/openwrt/trunk/staging_dir/toolchain-    arm_v6k_gcc-linaro_uClibc-0.9.32_eabi/bin/arm-openwrt-linux-c++'.

修改后的命令如下:

@${MAKE} /home/botbear/openwrt/trunk/staging_dir/toolchain-arm_v6k_gcc-linaro_uClibc-0.9.32_eabi/bin/arm-openwrt-linux-c++ --no-print-directory -C .build -f json.make

感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用man make了解make的参数:

-C dir, --directory=dir
        Change to directory dir before reading the makefiles or doing any-
        thing else.  If multiple -C options are specified, each is  inter-
        preted  relative to the previous one: -C / -C etc is equivalent to
        -C /etc.  This is typically used  with  recursive  invocations  of
        make.

-f file, --file=file, --makefile=FILE
        Use file as a makefile.

所以-C .build更改了目录.build

我不明白你关于修改命令的部分问题。

答案 1 :(得分:0)

尝试找到json.make所在的位置。似乎是makefile创建了&删除你正在谈论的目录。

从命令行看来,将目录更改为.build并执行json.make。不确定json.make是如何结束的。是.build创建然后删除的目录吗?