gnu-make相关内容
我正在研究的项目之一使用gnu make进行测试.我想在没有make实现但有POSIX shell的平台上进行测试. 是否可以创建一个脚本(最好是在python中)以“缝合"要制作的远程shell,并将其放入make的SHELL环境变量中? 如果没有,那么还有人能想到的另一种方式吗? 解决方案 可能. 创建一个脚本,该脚本将命令转发到远程主机.例如: #!/bin/
..
来自文档: $? 比目标更新的所有先决条件的名称, 它们之间有空格. 因此,给了一个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
..
因此在我的项目中,我有一个src目录和一个obj目录.我在src目录中递归地找到.c和.cpp文件,然后将其对应的.o文件放到obj目录中.因此,例如,如果我有一个.cpp文件:src/dir1/dir2/file.cpp,则其对应的.o文件将是obj/file.o.然后,我生成一个规则,使用以下代码使用make foreach 函数从.cpp文件中获取.o文件: rwildcard=$(f
..
我对Makefile和内核模块非常熟悉,但是最近我的Makefile中出现了一个毫无意义的问题-使用通配符. 为了证明这一点,我从头开始编写一个hello world内核模块. 目录结构是这样的: hello_mod/ | --- hello.c | --- Makefile 这是实际的makefile: CFILES := $(wildcard hell
..
如何在配方中使用多行变量? 文件名:多行变量 define foo = echo welcome endef export foo all: echo $(foo) 我得到以下输出.但我希望打印出“欢迎"的字样. $ make -f multiple-line-variable echo 解决方案 SunEric的答案不能正确解释正在发生的事情.是否添加@
..
我在Makefile配方中使用split命令分割了一个大文件. trails : $(OBJ) sort -m $? | accumulate.py --threshold 30 | split -C 10MB -d -a 3 - trail. 然后我将结果文件重命名为具有.acc扩展名.想法是稍后在此扩展上应用隐式规则. 我面临的问题是变量扩展发生在生成.acc文件之前.
..
来自文档: $? 比目标更新的所有先决条件的名称, 它们之间有空格. 现在,有了一个生成文件: # Create target 'all', that is created later than 'old', which was created after 'older'. $(shell touch older) $(shell sleep 1) $(shell touc
..
我遇到了GNU make 3.81无法删除中间文件的问题.该问题类似于 GNU不删除中间文件,但该答案并没有解决不了我的问题.我已将此问题简化为该测试用例: default: @echo no $@ target; exit 1 oncetwice: once twice @echo $@: $^ ## Uncommenting the following line i
..
我正在使用Makefile和GNU make基于源Markdown文件创建各种文档输出目标. 这包括使用latex或pdflatex创建DVI文件.使用非EPS或PS格式的图像会导致错误. 我可以在源Markdown文件中搜索并替换图像名称,并且已经做到了. 我想做的是为images/子目录中的所有图像文件创建一个makefile规则,然后运行convert创建这些文件的eps版
..
(这类似于 GNU make:执行目标但从文件中获取依赖项,但略有不同). 当我尝试强制建立目标时,make会自动认为该目标已过时,并强制运行依赖该目标的所有目标. 在我的情况下,目标是一个递归的make调用,它需要做很多工作,并且可能只是返回“什么都没做": .PHONY: intermediate.dat intermediate.dat: $(MAKE) e
..
如何检测gnu make将使用的shell?我希望我的品牌可以在以下平台上运行: Linux windows 装有cygwin的Windows(请注意,在装有cygwin的Windows上,make使用cygwin shell) 然后,我想检测gcc是否独立存在于OS上的系统上. 解决方案 到目前为止,我提出了以下解决方案: # detect what shell i
..
我正在使用静态模式规则编写Makefile,并且我希望为TARGETS的每个元素分配一个分配给当前目标名称(此处为词干'%')的变量. TARGETS = a b c d all : $(TARGETS) $(TARGETS) : % : DIR = % $(TARGETS) : % : %_setup build a_setup : code for a b_setup : cod
..
一个大项目通常具有一个复杂的Makefile系统.在不同的Makefile中分散了许多变量定义和目标优先级依赖项.有什么方便的方法可以打印所有先决条件并为目标建立规则? 具体来说,两个问题: 问题1 说我有四个Makefile: Makefile1: p: a b [some rule] Makefile2: q: c d [some rul
..
我正在尝试使用 monorepo ,并根据源文件的目录来处理动态输出目录. 我的项目的布局如下: % tree . . ├── Makefile └── packages ├── bar │ └── src │ └── index.js │ └── other-file.js └── foo └── s
..
在GNU Makefile中,有两种类型的变量: # simple variable (immediate evaluation): VAR := some_assignment # recursively expanded variable (deferred evaluation): VAR = some_assignment 可以使用以下方法将其附加到递归扩展的变量上:
..
我有一个C项目,其目录布局是这样的 src1 -a.c -b.c src2 -c.c -d.c objects 我正在尝试将a/b/c/d编译为目标文件并将其保存到objects目录中,这是我的Makefile的一部分. src1 = src1/ src1 = src2/ obj = objects/ src1_files = a.c b.c src
..
此问题在本质上与问题 2543127 相似. /p> 我有一个带有头文件列表的gnu makefile.每个标头文件可能位于不同的目录中,例如 HEADERS = $(wildcard *.h) $(wildcard foo/*.h) $(wildcard bar/*.h) 我想让makefile将所有标头复制到一个包含目录 INCDIR = ../include ,并且当调
..
我有一个用于编译静态库的makefile.该makefile具有用于编译与静态库关联的单元测试套件的规则.编译完测试套件后,将调用python脚本来运行测试并记录结果.看起来像这样: unit: $(MAKE) -C cXbase/unit python $(TESTS_RUNNER) $(UNIT_TESTS_EXEC) $(UNIT_TESTS_LOG) 我使用Pyt
..
假设我有一个Makefile: a.out: sleep 3 touch a.out a1 b.out: cat a1 > b.out c.out: a.out b.out cat a.out b.out > c.out make c.out通常会成功执行 ,因为a.out的命令先于b.out的命令执行.但是make b.out将失败(在干净目录中),
..
我想使用ifeq和&来检查makefile中的条件.不确定该怎么做: ifeq ( cond1 = yes || cond2 = yes ) set value x = 1; else set value x = 2; endif 请提出正确的做法? 解决方案 ifeq ($(filter $(cond1) $(cond2),yes),) x
..