我使用Makefiles.
我有一个目标run,它运行构建目标.简化后,它看起来如下:
prog: ....
...
run: prog
./prog
Run Code Online (Sandbox Code Playgroud)
坐下来.我知道这是巧妙的,但不需要起立鼓掌.
现在,我的问题是 - 有没有办法传递参数?以便
make run asdf --> ./prog asdf
make run the dog kicked the cat --> ./prog the dog kicked the cat
Run Code Online (Sandbox Code Playgroud)
谢谢!
在我的GNUmakefile中,我希望有一个使用临时目录的规则.例如:
out.tar: TMP := $(shell mktemp -d)
echo hi $(TMP)/hi.txt
tar -C $(TMP) cf $@ .
rm -rf $(TMP)
Run Code Online (Sandbox Code Playgroud)
如上所述,上述规则在解析规则时创建临时目录.这意味着,即使我没有直接创建.tar,也会创建许多临时目录.我想避免我的/ tmp被未使用的临时目录弄乱.
是否有办法使该变量仅在触发规则时定义,而不是在定义时定义?
我的主要想法是将mktemp和tar转储到shell脚本中,但这看起来有点难看.
我正在尝试使用ndk-build编译库时打印一些额外的信息.
例如:
LOCAL_PATH := $(call my-dir)
all:;echo $(LOCAL_PATH)
echo: $(LOCAL_PATH)
print:echo "i'm not working"
Run Code Online (Sandbox Code Playgroud)
当我做ndk-build时,只需编译所有Android.mk,但我没有得到控制台回声.我已经阅读了GNU make info(ndk-build只是一个很小的GNU make),有些帖子说echo必须使用$(VAR)才能工作,但它不适用于我的情况.
有些想法?
我试图强制make文件显示下一个字符串:
"Please execute next commands:
setenv PATH /usr/local/greenhills/mips5/linux86:$PATH"
Run Code Online (Sandbox Code Playgroud)
问题在于"$PATH".命令
@echo "setenv PATH /usr/local/greenhills/mips5/linux86:$PATH"
Run Code Online (Sandbox Code Playgroud)
导致结果
"setenv PATH /usr/local/greenhills/mips5/linux86:ATH"
Run Code Online (Sandbox Code Playgroud)
转义字符,引号的任何组合都"$(shell echo "没有得到所需的结果......
有什么建议?
如何在运行make时列出Makefile中所有变量(也称为宏)的当前值?
例如,如果这是在Makefile中:
CUR-DIR := $(shell /bin/pwd)
LOG-DIR := $(CUR-DIR)/make-logs
Run Code Online (Sandbox Code Playgroud)
然后我想告诉我:
CUR-DIR = /home/johv/src/test
LOG-DIR = /home/johv/src/test/make-logs
Run Code Online (Sandbox Code Playgroud)