标签: makefile

makefile中.PHONY的目的是什么?

.PHONYMakefile 中的含义是什么?我已经完成了这个,但它太复杂了.

有人可以用简单的语言向我解释一下吗?

makefile phony-target

1535
推荐指数
10
解决办法
36万
查看次数

GNU Makefile变量赋值=,?=,:=和+ =之间有什么区别?

任何人都可以清楚地解释变量赋值在Makefile中是如何工作的.

有什么区别:

 VARIABLE = value
 VARIABLE ?= value
 VARIABLE := value
 VARIABLE += value
Run Code Online (Sandbox Code Playgroud)

我已经阅读了GNU Make手册中的部分,但它对我来说仍然没有意义.

makefile gnu-make

740
推荐指数
6
解决办法
20万
查看次数

从命令行传递其他变量来制作

我可以将变量作为命令行参数传递给GNU Makefile吗?换句话说,我想传递一些最终会成为Makefile变量的参数.

gnu makefile command-line-arguments

560
推荐指数
7
解决办法
46万
查看次数

makefile:4:***缺少分隔符.停止

这是我的makefile:

all:ll

ll:ll.c   
  gcc  -c  -Wall -Werror -02 c.c ll.c  -o  ll  $@  $<

clean :
  \rm -fr ll
Run Code Online (Sandbox Code Playgroud)

当我尝试make cleanmake make,我得到这个错误:

:makefile:4: *** missing separator.  Stop.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

c makefile

397
推荐指数
10
解决办法
41万
查看次数

与'make install'相反的是什么,即如何在Linux中卸载库?

在跑步的时候

./configure --prefix=/mingw 
Run Code Online (Sandbox Code Playgroud)

在我以前运行的库的MinGW/MSYS系统上

'./configure --prefix=/mingw && make && make install' 
Run Code Online (Sandbox Code Playgroud)

我发现了这条消息:

警告:已安装Vamp插件SDK的一个版本.如果您安装新版本而不先删除旧版本,则会出现忧虑和悲伤.(继续)

这让我很担心.与'make install'相反的是什么,即如何在Linux中卸载库?"干净"会做这项工作,还是涉及其他步骤?

makefile uninstall

377
推荐指数
9
解决办法
29万
查看次数

makefile符号$ @和$ <是什么意思?

CC=g++
CFLAGS=-c -Wall
LDFLAGS=
SOURCES=main.cpp hello.cpp factorial.cpp
OBJECTS=$(SOURCES:.cpp=.o)
EXECUTABLE=hello

all: $(SOURCES) $(EXECUTABLE)

$(EXECUTABLE): $(OBJECTS)
    $(CC) $(LDFLAGS) $(OBJECTS) -o $@

.cpp.o:
    $(CC) $(CFLAGS) $< -o $@
Run Code Online (Sandbox Code Playgroud)

什么做的$@$<准确呢?

makefile

371
推荐指数
5
解决办法
25万
查看次数

如何在Mac OS X上发现*logical*核心的数量?

从命令行中,您如何判断运行Mac OS X时机器上有多少个核心?在Linux上,我使用:

x=$(awk '/^processor/ {++n} END {print n+1}' /proc/cpuinfo)
Run Code Online (Sandbox Code Playgroud)

它并不完美,但它很接近.这是为了获取make,这就是为什么它给出比实际数字高1的结果.我知道上面的代码可以用Perl编写,也可以用grep,wc和cut编写,但我认为上面的内容在简洁性和可读性之间是一个很好的权衡.

非常晚编辑:只是为了澄清:我问有多少逻辑核可用,因为这与我想要make产生多少个同时工作相对应.jkp的答案,由Chris Lloyd进一步完善,正是我所需要的.因人而异.

macos makefile

368
推荐指数
11
解决办法
19万
查看次数

gcc makefile错误:"没有规则来制作目标..."

我正在尝试使用GCC(linux)和makefile来编译我的项目.

我得到以下错误,在这种情况下似乎无法破译:

"No rule to make target 'vertex.cpp', needed by 'vertex.o'.  Stop."
Run Code Online (Sandbox Code Playgroud)

这是makefile:

a.out: vertex.o edge.o elist.o main.o vlist.o enode.o vnode.o
    g++ vertex.o edge.o elist.o main.o vlist.o enode.o vnode.o

main.o: main.cpp main.h
    g++ -c main.cpp

vertex.o: vertex.cpp vertex.h
    g++ -c vertex.cpp

edge.o: edge.cpp edge.h
    g++ -c num.cpp

vlist.o: vlist.cpp vlist.h
    g++ -c vlist.cpp

elist.o: elist.cpp elist.h
    g++ -c elist.cpp

vnode.o: vnode.cpp vnode.h
    g++ -c vnode.cpp

enode.o: enode.cpp enode.h
    g++ -c node.cpp
Run Code Online (Sandbox Code Playgroud)

gcc makefile

335
推荐指数
9
解决办法
90万
查看次数

将参数传递给"make run"

我使用Makefiles.

我有一个目标run,它运行构建目标.简化后,它看起来如下:

prog: ....
  ...

run: prog
  ./prog
Run Code Online (Sandbox Code Playgroud)

坐下来.我知道这是巧妙的,但不需要起立鼓掌.

现在,我的问题是 - 有没有办法传递参数?以便

make run asdf --> ./prog asdf
make run the dog kicked the cat --> ./prog the dog kicked the cat
Run Code Online (Sandbox Code Playgroud)

谢谢!

makefile

328
推荐指数
10
解决办法
19万
查看次数

如何在makefile中编写'cd'命令?

例如,我的makefile中有类似的东西:

all:
     cd some_directory
Run Code Online (Sandbox Code Playgroud)

但是当我输入时,我make只看到'cd some_directory',就像在echo命令中一样.

makefile gnu-make

319
推荐指数
5
解决办法
18万
查看次数