0

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

# 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

任何帮助表示赞赏!

4

2 回答 2

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

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

于 2012-05-14T00:21:28.977 回答
0

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

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

于 2012-05-15T12:02:37.273 回答