Questions tagged «makefile»

生成文件是构建控制语言/工具生成的输入文件。它指定目标和依赖项以及要执行的相关命令(又称为配方)以更新目标。

15
如何在makefile中打印出变量
在我的makefile文件中,我有一个变量“ NDK_PROJECT_PATH”,我的问题是在编译时如何将其打印出来? 我阅读了显示“ $ PATH”字符串的Make文件回显,然后尝试执行以下操作: @echo $(NDK_PROJECT_PATH) @echo $(value NDK_PROJECT_PATH) 两者都给我 "build-local.mk:102: *** missing separator. Stop." 谁知道为什么它对我不起作用?
246 makefile  gnu-make 


7
如何将命令的输出分配给Makefile变量
仅当安装的Python大于某个版本(例如2.5)时,我才需要有条件地执行一些make规则。 我以为可以执行以下操作: python -c 'import sys; print int(sys.version_info >= (2,5))' 然后在ifeqmake语句中使用输出(如果可以,则为“ 1”,否则为“ 0”)。 在一个简单的bash shell脚本中,它只是: MY_VAR=`python -c 'import sys; print int(sys.version_info >= (2,5))'` 但这在Makefile中不起作用。 有什么建议?我可以使用任何其他明智的解决方法来实现此目的。
224 shell  makefile 

4
为什么要认为目标是最新的?
这是我的Makefile: REBAR=./rebar REBAR_COMPILE=$(REBAR) get-deps compile all: compile compile: $(REBAR_COMPILE) test: $(REBAR_COMPILE) skip_deps=true eunit clean: -rm -rf deps ebin priv doc/* docs: $(REBAR_COMPILE) doc ifeq ($(wildcard dialyzer/sqlite3.plt),) static: $(REBAR_COMPILE) build_plt analyze else static: $(REBAR_COMPILE) analyze endif 我可以make compile多次跑步并得到 aromanov@alexey-desktop:~/workspace/gm-controller/lib/erlang-sqlite$ make compile ./rebar get-deps compile ==> erlang-sqlite (get-deps) ==> erlang-sqlite (compile) 但是,由于某些原因,运行make …
223 makefile 





6
如何在Makefile目标中使用Bash语法?
我经常发现Bash语法非常有用,例如像中的流程替换diff <(sort file1) <(sort file2)。 是否可以在Makefile中使用这样的Bash命令?我在想这样的事情: file-differences: diff <(sort file1) <(sort file2) > $@ 在我的GNU Make 3.80中,这将产生错误,因为它使用shell而不是bash执行命令。
208 bash  shell  makefile 

4
在规则执行时定义make变量
在我的GNUmakefile中,我想有一个使用临时目录的规则。例如: out.tar: TMP := $(shell mktemp -d) echo hi $(TMP)/hi.txt tar -C $(TMP) cf $@ . rm -rf $(TMP) 按照书面规定,上述规则在解析规则时会创建一个临时目录。这意味着,即使我没有一直做out.tar,也会创建许多临时目录。我想避免/ tmp堆满未使用的临时目录。 有没有一种方法可以导致仅在触发规则时定义变量,而不是在定义规则时定义? 我的主要思想是将mktemp和tar转储到Shell脚本中,但这似乎有些难看。
208 makefile  gnu-make 

12
如何获取Makefile的当前相对目录?
我在应用程序特定的目录中有几个Makefile,例如: /project1/apps/app_typeA/Makefile /project1/apps/app_typeB/Makefile /project1/apps/app_typeC/Makefile 每个Makefile在此路径上一级都包含一个.inc文件: /project1/apps/app_rules.inc 在app_rules.inc内部,我设置了要在生成二进制文件的位置放置目标文件。我希望所有二进制文件都在各自的app_type路径中: /project1/bin/app_typeA/ 我尝试使用$(CURDIR),如下所示: OUTPUT_PATH = /project1/bin/$(CURDIR) 但是相反,我将二进制文件埋入了整个路径名,如下所示:(请注意冗余) /project1/bin/projects/users/bob/project1/apps/app_typeA 我该怎么做才能获得执行的“当前目录”,以便我只知道app_typeX将二进制文件放入其各自的types文件夹中?

17
如何获得makefile中的目标列表?
我使用过rake(一个Ruby make程序),它有一个选项来获取所有可用目标的列表,例如 > rake --tasks rake db:charset # retrieve the charset for your data... rake db:collation # retrieve the collation for your da... rake db:create # Creates the databases defined in y... rake db:drop # Drops the database for your curren... ... 但是在GNU make中似乎没有选择这样做。 显然,自2007年以来,几乎已经有相应的代码了-http: //www.mail-archive.com/help-make@gnu.org/msg06434.html。 无论如何,我几乎没有办法从makefile中提取目标,您可以将其包含在makefile中。 list: @grep '^[^#[:space:]].*:' …



15
如何强制makefile重建目标
我有一个生成的生成文件,然后调用另一个生成文件。由于此makefile调用了更多的makefile来完成工作,因此它实际上并没有改变。因此,它一直认为该项目已建成并且是最新的。 dnetdev11 ~ # make make: `release' is up to date. 如何强制Makefile重建目标? clean = $(MAKE) -f ~/xxx/xxx_compile.workspace.mak clean build = svn up ~/xxx \ $(clean) \ ~/cbp2mak/cbp2mak -C ~/xxx ~/xxx/xxx_compile.workspace \ $(MAKE) -f ~/xxx/xxx_compile.workspace.mak $(1) \ release: $(build ) debug: $(build DEBUG=1) clean: $(clean) install: cp ~/xxx/source/xxx_utility/release/xxx_util /usr/local/bin cp ~/xxx/source/xxx_utility/release/xxxcore.so …
182 linux  makefile 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.