我正在尝试在makefile中执行此操作,但它失败的可能性非常大:
M_ARCH := $(shell g++ -dumpmachine | awk '{split($1,a,"-");print a[1]}')
Run Code Online (Sandbox Code Playgroud)
你知道为什么吗?我想它与逃避有关,但是在哪里和哪里?
关于GNU make中的作业数量是否应该等于核心数量似乎存在争议,或者如果您可以通过添加一个可以排队等待而其他人"工作"的额外作业来优化构建时间.
使用-j4或-j5四核系统更好吗?
您是否看过(或已完成)支持其中一种或哪种的基准测试?
对于Make中的变量赋值,我看到:=和=运算符.他们之间有什么区别?
几个月前,我想出了以下Makefile针对学校作业的通用:
# ------------------------------------------------
# Generic Makefile
#
# Author: yanick.rochon@gmail.com
# Date : 2010-11-05
#
# Changelog :
# 0.01 - first version
# ------------------------------------------------
# project name (generate executable with this name)
TARGET = projectname
CC = gcc -std=c99 -c
# compiling flags here
CFLAGS = -Wall -I.
LINKER = gcc -o
# linking flags here
LFLAGS = -Wall
SOURCES := $(wildcard *.c)
INCLUDES := $(wildcard *.h)
OBJECTS := $(SOURCES:.c=*.o)
rm = rm -f
$(TARGET): obj
@$(LINKER) …Run Code Online (Sandbox Code Playgroud) 在GNU makefile中,我想知道是否有可能通过文件列表输入来创建带有新扩展名的文件列表输出.
在输入中,我得到这个列表:
FILES_IN=file1.doc file2.xls
Run Code Online (Sandbox Code Playgroud)
我想在FILES_IN变量的makefile中构建这个变量:
FILES_OUT=file1.docx file2.xlsx
Run Code Online (Sandbox Code Playgroud)
可能吗 ?怎么样 ?
这很困难因为我必须解析文件列表,并检测每个扩展名(.doc,.xls)以将其替换为正确的扩展名.
任何人都可以解释目标"oldconfig"在Linux内核makefile中的作用吗?我看到它在一些构建文档中引用但从未解释它究竟做了什么.
多年来我一直在使用make和makefiles,虽然这个概念很合理,但实现还是有所不足.
有没有人找到任何好的替代方案,使不会使问题过于复杂?
我想编写一个运行测试的Makefile.测试位于"./tests"目录中,要测试的可执行文件位于"./bin"目录中.
当我运行测试时,他们没有看到exec文件,因为目录./bin不在$ PATH中.
当我做这样的事情时:
EXPORT PATH=bin:$PATH
make test
Run Code Online (Sandbox Code Playgroud)
一切正常.但是我需要更改Makefile中的$ PATH.
简单的Makefile内容:
test all:
PATH=bin:${PATH}
@echo $(PATH)
x
Run Code Online (Sandbox Code Playgroud)
它正确打印路径,但是找不到文件x.
当我手动执行此操作时:
$ export PATH=bin:$PATH
$ x
Run Code Online (Sandbox Code Playgroud)
一切都好.
我怎么能改变Makefile中的$ PATH?
可能重复:
发生错误:缺少分隔符
在makefile中有这个代码:
PROG = semsearch
all: $(PROG)
%: %.c
gcc -o $@ $< -lpthread
clean:
rm $(PROG)
Run Code Online (Sandbox Code Playgroud)
和错误
missing separator. stop.
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
有没有更好的方法从makefile中获取设置env变量的脚本?
FLAG ?= 0
ifeq ($(FLAG),0)
export FLAG=1
/bin/myshell -c '<source scripts here> ; $(MAKE) $@'
else
...targets...
endif
Run Code Online (Sandbox Code Playgroud) makefile ×10
gnu-make ×5
linux ×2
c ×1
colon-equals ×1
escaping ×1
g++ ×1
linux-kernel ×1
shell ×1