Questions tagged «makefile»

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

3
如何添加包含和库路径以配置/制作周期?
我需要在没有su访问权限的linux框中安装库的地方。我正在使用〜/ local [/ bin,/ lib,/ include],但是我不知道如何告诉./configure在那寻找库(特别是我正在尝试编译emacs,这需要libgif ,这不在我的发行版中)。 我尝试添加 export PATH=$PATH:~/local/bin export LD_LIBRARY_PATH=~/local/lib export C_INCLUDE_PATH=~/local/include export CPLUS_INCLUDE_PATH=~/local/include 到.bashrc,但似乎不起作用。



6
“多个目标模式” Makefile错误
我的makefile失败并出现错误: Makefile:34: *** multiple target patterns. Stop. 这到底是什么意思,我该如何解决? (由Obvious上尉编写的GNU make手册无济于事)。 找到了。我有规则的形式: $(FOO): bar 其中FOO,从壳命令与一个含有结肠错误消息污染其设置。
80 makefile 

12
有希望的替代品吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 改善这个问题 我使用make和makefile已经很多年了,尽管这个概念很合理,但是实现还是有待改进的。 有没有人找到任何好的替代方法来解决这个问题呢?

2
更改npm脚本的工作目录
问:是否可以更改npm运行脚本的上下文? 我想要的是以下内容: "scripts": { "test": "gulp mocha", "pre-install": "./deps/2.7/cpython/configure --prefix=$(pwd)/build --exec-prefix=$(pwd)/build && make -C deps/2.7/cpython && make -C deps/2.7/cpython install", "install": "node-gyp rebuild" }, 显然,cd deps/2.7/cpython/ && ./configure它将在类似UNIX的系统上运行,但不能在Windows上运行。 原因:问题的根源在于configurepython repo的命令将文件输出到调用它的目录中。但是,这些文件是与构建相关的,make并且make install在回购目录中查找文件。 在这种情况下,我无法更改,Makefile因为Python的构建过程很复杂。 替代方案:替代方案可能是编写一些install.js并使用节点的操作系统独立API和some child_process.exec(),我可能会这样做。但是,不离开npm真的很好。

3
如何创建配置脚本?
这听起来像是一个非常笼统的问题,但确实如此。 我有一个要求,以创建我的应用程序配置脚本,将生成的这种配置的结果makefile(基本configure,make,make install)。我的问题是,我应该从哪里开始构建?有没有我可以效仿的例子?

5
GNU可以使句柄文件名带有空格吗?
我有一个包含几个文件的目录,其中一些文件名称中包含空格: Test workspace/ Another directory/ file1.ext file2.ext demo 2012-03-23.odp 我$(wildcard)在此目录上使用GNU的命令,然后使用遍历结果$(foreach),并打印出所有内容。这是代码: FOO := $(wildcard *) $(info FOO = $(FOO)) $(foreach PLACE,$(FOO),$(info PLACE = $(PLACE))) 这是我希望看到的结果: Test workspace Another directory file1.ext file2.ext demo 2012-03-23.odp 这是我实际上会得到的: Test workspace Another directory file1.ext file2.ext demo 2012-03-23.odp 后者显然对我没有用。该文档为$(wildcard)它返回一个“名字的空格分隔的名单”,但完全平整出国家不承认的巨大问题,这引起了。也不对文件进行$(foreach)。 有可能解决此问题吗?如果是这样,怎么办?重命名每个文件和目录以删除空格不是一个选择。
78 shell  makefile  gnu 

2
为ifeq出错:意外令牌附近的语法错误
我正在写一个Makefile,它在一个地方进行字符串匹配,代码如下: if test ...; \ then \ shell scripts... \ fi ifeq ($(DIST_TYPE),nightly) shell scripts ... endif 这里的第一个if是shell脚本,第二个ifeq是GNU Make的条件脚本。但是,将产生以下错误: ifeq(每晚,每晚) / bin / sh:-c:第0行:意外令牌'nightly,nightly'附近的语法错误 / bin / sh:-c:第0行:``ifeq(每晚,每晚)'' 这里发生了什么事?似乎Make正在尝试调用Shell。 谢谢。
77 makefile 


13
如何在Makefile中获取脚本?
是否有更好的方法从makefile中获取设置环境变量的脚本? FLAG ?= 0 ifeq ($(FLAG),0) export FLAG=1 /bin/myshell -c '<source scripts here> ; $(MAKE) $@' else ...targets... endif
77 shell  makefile 

8
tar:文件在我们读取时已更改
我正在使用make和tar备份。执行makefile时,tar命令显示file changed as we read it。在这种情况下, 警告出现时tar包还可以 但它会停止tar命令以进行以下备份 显示警告的文件实际上并没有改变-出现警告真的很奇怪 显示警告的文件是随机出现的,我的意思是,每次我运行makefile时,显示警告的文件都是不同的 --ignore-failed-read没有帮助。我在MinGW中使用tar 1.23 我只是将计算机更改为WIN7 64位。该脚本在旧的WIN7 32位上运行良好。但是tar版本并不像1.23那样新。 如何停止tar的警告,以在警告之后停止备份? 编辑2:这可能是原因 正如我上面所说,bash shell脚本在我的旧计算机上运行良好。与旧计算机相比,msys版本有所不同。tar命令的版本也是如此。在旧计算机中,tar是1.13.19,在新计算机中是1.23。我复制了旧的tar命令,而没有将其依赖项msys-1.0.dll复制到新计算机上,并将其重命名为tar_old。我还更新了shell脚本中的tar命令并运行了该脚本。那一切都很好。因此,问题似乎出在tar命令上。我确定去皮时没有任何文件更改。新版本中的tar命令有问题吗?我不知道。 编辑1:添加更多详细信息 备份由bash shell脚本调用。它扫描目标目录并生成makefile,然后调用make以使用tar命令进行备份。接下来是bash shell脚本构建的典型makefile。 #-------------------------------------------- # backup VC #-------------------------------------------- # the program for packing PACK_TOOL=tar # the option for packing tool PACK_OPTION=cjvf # M$: C driver WIN_C_DIR=c: # M$: D driver …
76 makefile  tar 

3
CFLAGS,CCFLAGS,CXXFLAGS-这些变量究竟控制什么?
我正在使用GNU make编译我的C ++代码,并且我想了解如何使我的编译可定制。 我看在不同的地方在于CFLAGS,CCFLAGS并且CXXFLAGS被用于此目的。那么我应该如何使用它们呢?如果我对编译器有其他命令行参数,我应该将它们附加到CFLAGS或前面?有没有惯例? 为什么三个不同的变量?我想C编译器应该获取CFLAGS和CCFLAGS,而C ++编译器应该获取CFLAGS和CXXFLAGS-我做对了吗? 人类使用者是否应该设置所有这些变量?做任何自动工具(automake,autoconf等)设置它们?我应该使用的linux系统没有定义任何这些变量-这是典型的吗? 目前,我的Makefile看起来像这样,我感觉有点脏: ifdef code_coverage GCOV_FLAG := -fprofile-arcs -ftest-coverage else GCOV_FLAG := endif WFLAGS := -Wall INC_FLAGS := -Istuff -Imore_stuff -Ietc CCFLAGSINT := -O3 $(WFLAGS) $(INC_FLAGS) $(CCFLAGS) ... (somewhere in the makefile, the command-line for compilation looks like this) $(CC) $(CCFLAGSINT) -c $< -o $@ …


8
找不到Cygwin Make bash命令
我将cygwin与所有软件包安装在Windows 7 64位上。由于某种原因,make命令给我一个错误:bash make:命令未找到。我检查了一下,在我的bin文件夹中没有make.exe。谁可以帮我这个事?我真的需要在CYGWIN工作。我不想去Windows XP。
74 c++  makefile  cygwin  command 

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.