gnu-make相关内容

我可以使用GNU make的SHELL变量连接到远程shell吗?

我正在研究的项目之一使用gnu make进行测试.我想在没有make实现但有POSIX shell的平台上进行测试. 是否可以创建一个脚本(最好是在python中)以“缝合"要制作的远程shell,并将其放入make的SHELL环境变量中? 如果没有,那么还有人能想到的另一种方式吗? 解决方案 可能. 创建一个脚本,该脚本将命令转发到远程主机.例如: #!/bin/ ..
发布时间:2020-11-16 03:46:41 其他开发

$的make不一致的扩展多变的

来自文档: $? 比目标更新的所有先决条件的名称, 它们之间有空格. 因此,给了一个makefile: # Force make to search for 'foo' in the VPATH directory $(shell rm -rf foo) # If 'D' is a "regular" file, we remove it first. $(shell rm ..
发布时间:2020-11-16 03:46:38 其他开发

生成GNU Makefile规则

因此在我的项目中,我有一个src目录和一个obj目录.我在src目录中递归地找到.c和.cpp文件,然后将其对应的.o文件放到obj目录中.因此,例如,如果我有一个.cpp文件:src/dir1/dir2/file.cpp,则其对应的.o文件将是obj/file.o.然后,我生成一个规则,使用以下代码使用make foreach 函数从.cpp文件中获取.o文件: rwildcard=$(f ..
发布时间:2020-11-16 03:46:35 其他开发

如何使用多行变量

如何在配方中使用多行变量? 文件名:多行变量 define foo = echo welcome endef export foo all: echo $(foo) 我得到以下输出.但我希望打印出“欢迎"的字样. $ make -f multiple-line-variable echo 解决方案 SunEric的答案不能正确解释正在发生的事情.是否添加@ ..
发布时间:2020-11-16 03:46:28 服务器开发

GNU Makefile中的后期变量扩展

我在Makefile配方中使用split命令分割了一个大文件. trails : $(OBJ) sort -m $? | accumulate.py --threshold 30 | split -C 10MB -d -a 3 - trail. 然后我将结果文件重命名为具有.acc扩展名.想法是稍后在此扩展上应用隐式规则. 我面临的问题是变量扩展发生在生成.acc文件之前. ..
发布时间:2020-11-16 03:46:25 其他开发

变量"$?"的错误扩展在makefile中

来自文档: $? 比目标更新的所有先决条件的名称, 它们之间有空格. 现在,有了一个生成文件: # Create target 'all', that is created later than 'old', which was created after 'older'. $(shell touch older) $(shell sleep 1) $(shell touc ..
发布时间:2020-11-16 03:46:18 其他开发

为什么不删除中间文件?

我遇到了GNU make 3.81无法删除中间文件的问题.该问题类似于 GNU不删除中间文件,但该答案并没有解决不了我的问题.我已将此问题简化为该测试用例: default: @echo no $@ target; exit 1 oncetwice: once twice @echo $@: $^ ## Uncommenting the following line i ..
发布时间:2020-11-16 03:46:15 其他开发

Makefile:对子目录中的所有文件进行操作吗?

我正在使用Makefile和GNU make基于源Markdown文件创建各种文档输出目标. 这包括使用latex或pdflatex创建DVI文件.使用非EPS或PS格式的图像会导致错误. 我可以在源Markdown文件中搜索并替换图像名称,并且已经做到了. 我想做的是为images/子目录中的所有图像文件创建一个makefile规则,然后运行convert创建这些文件的eps版 ..
发布时间:2020-11-16 03:46:11 其他开发

强制make从文件中查找过时的条件

(这类似于 GNU make:执行目标但从文件中获取依赖项,但略有不同). 当我尝试强制建立目标时,make会自动认为该目标已过时,并强制运行依赖该目标的所有目标. 在我的情况下,目标是一个递归的make调用,它需要做很多工作,并且可能只是返回“什么都没做": .PHONY: intermediate.dat intermediate.dat: $(MAKE) e ..
发布时间:2020-11-16 03:46:08 其他开发

如何检测GNU make中使用的shell?

如何检测gnu make将使用的shell?我希望我的品牌可以在以下平台上运行: Linux windows 装有cygwin的Windows(请注意,在装有cygwin的Windows上,make使用cygwin shell) 然后,我想检测gcc是否独立存在于OS上的系统上. 解决方案 到目前为止,我提出了以下解决方案: # detect what shell i ..
发布时间:2020-11-16 03:46:05 其他开发

如何使用make打印目标的所有先决条件和构建规则

一个大项目通常具有一个复杂的Makefile系统.在不同的Makefile中分散了许多变量定义和目标优先级依赖项.有什么方便的方法可以打印所有先决条件并为目标建立规则? 具体来说,两个问题: 问题1 说我有四个Makefile: Makefile1: p: a b [some rule] Makefile2: q: c d [some rul ..
发布时间:2020-11-16 03:44:59 其他开发

GNU make:在递归扩展变量之前添加?

在GNU Makefile中,有两种类型的变量: # simple variable (immediate evaluation): VAR := some_assignment # recursively expanded variable (deferred evaluation): VAR = some_assignment 可以使用以下方法将其附加到递归扩展的变量上: ..
发布时间:2020-11-16 03:44:53 其他开发

gnu make将许多文件复制到一个位置

此问题在本质上与问题 2543127 相似. /p> 我有一个带有头文件列表的gnu makefile.每个标头文件可能位于不同的目录中,例如 HEADERS = $(wildcard *.h) $(wildcard foo/*.h) $(wildcard bar/*.h) 我想让makefile将所有标头复制到一个包含目录 INCDIR = ../include ,并且当调 ..
发布时间:2020-11-16 03:44:42 其他开发

如果单元测试失败,则使失败

我有一个用于编译静态库的makefile.该makefile具有用于编译与静态库关联的单元测试套件的规则.编译完测试套件后,将调用python脚本来运行测试并记录结果.看起来像这样: unit: $(MAKE) -C cXbase/unit python $(TESTS_RUNNER) $(UNIT_TESTS_EXEC) $(UNIT_TESTS_LOG) 我使用Pyt ..
发布时间:2020-11-16 03:43:40 其他开发

将ifeq与多个选项一起使用

我想使用ifeq和&来检查makefile中的条件.不确定该怎么做: ifeq ( cond1 = yes || cond2 = yes ) set value x = 1; else set value x = 2; endif 请提出正确的做法? 解决方案 ifeq ($(filter $(cond1) $(cond2),yes),) x ..
发布时间:2020-11-16 03:43:33 其他开发