相关疑难解决方法(0)

makefile中.PHONY的目的是什么?

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

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

makefile phony-target

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

如何在makefile中打印出变量

在我的makefile中,我有一个变量'NDK_PROJECT_PATH',我的问题是如何在编译时将其打印出来?

我读了Make文件echo显示"$ PATH"字符串,我试过:

@echo $(NDK_PROJECT_PATH)
@echo $(value NDK_PROJECT_PATH)
Run Code Online (Sandbox Code Playgroud)

两个都给了我

"build-local.mk:102: *** missing separator.  Stop."
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么它不适合我?

makefile gnu-make

222
推荐指数
8
解决办法
30万
查看次数

如何从命令行传递参数到Makefile?

如何从命令行传递参数到Makefile?

我明白我能做到

$ make action VAR="value"
$ value
Run Code Online (Sandbox Code Playgroud)

Makefile

VAR = "default"
action:
    @echo $(VAR)
Run Code Online (Sandbox Code Playgroud)

我如何获得以下行为?

$ make action value
value
Run Code Online (Sandbox Code Playgroud)

怎么样

$make action value1 value2
value1 value2
Run Code Online (Sandbox Code Playgroud)

parameters command-line arguments makefile

99
推荐指数
5
解决办法
12万
查看次数

gnu make:列出特定运行中所有变量(或"宏")的值

如何在运行make时列出Makefile中所有变量(也称为宏)的当前值?

例如,如果这是在Makefile中:

CUR-DIR := $(shell /bin/pwd)
LOG-DIR := $(CUR-DIR)/make-logs
Run Code Online (Sandbox Code Playgroud)

然后我想告诉我:

CUR-DIR = /home/johv/src/test
LOG-DIR = /home/johv/src/test/make-logs
Run Code Online (Sandbox Code Playgroud)

makefile gnu-make

38
推荐指数
4
解决办法
3万
查看次数

Makefile 中的基本 if else 语句

我正在尝试在 Makefile 中执行一个简单的 if else 语句:

check:
  if [ -z "$(APP_NAME)" ]; then \
    echo "Empty" \
  else \
    echo "Not empty" \
  fi
Run Code Online (Sandbox Code Playgroud)

当我执行时make check,出现以下错误:

if [ -z "" ]; then
/bin/bash: -c: line 1: syntax error: unexpected end of file
make: *** [check] Error 2
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

我知道我可以使用以下内容,但是在回声之后我有很多逻辑,所以我需要将它分布在多行中:

check:
  [ -z "$(PATH)" ] && echo "Empty" || echo "Not empty"
Run Code Online (Sandbox Code Playgroud)

bash if-statement makefile

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

Makefile-获取传递给make的参数

我有一个像这样的makefile:

.SILENT: #don't echo commands as we run them.

###
# here, set $1 (in the latter bash script) to the first make arg.
# $2 to the second one.
# et cetera.
# ($0 being set properly is optional)
###

foo:
    echo "you passed to make: $1 $2 $3 $4 $5 $6"
Run Code Online (Sandbox Code Playgroud)

所以我可以做:

make foo
You passed to make: foo
Run Code Online (Sandbox Code Playgroud)

(不要告诉任何人,但我正在创建“给我做三明治”的东西)

makefile

7
推荐指数
1
解决办法
7305
查看次数

Makefile:有条件退出

我想在 Makefile 中执行一些代码之前检查是否设置了环境变量。如果未设置,我想抛出一个带有简单错误消息的错误:

run:
  [ -z "$(MY_APP)" ] && echo "MY_APP must be set" && exit 1
  echo "MY_APP is set. Yay!"
  echo "Let's continue on with the command..."
Run Code Online (Sandbox Code Playgroud)

MY_APP未设置时,我收到以下错误,这是需要的:

[ -z "" ] && echo "MY_APP must be set" && exit 1
MY_APP must be set
make: *** [run] Error 1
Run Code Online (Sandbox Code Playgroud)

但是,何时MY_APP设置我收到以下错误:

[ -z "EXAMPLE_NAME" ] && echo "MY_APP must be set" && exit 1
make: *** [run] Error 1
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?有没有更好的方法来做到这一点?

bash makefile

5
推荐指数
1
解决办法
1705
查看次数

make,变量取决于目标

生成文件

abc:
TEST=$@ /* TEST=abc */

def:
TEST=$@ /* TEST=def */

xxx:
        @echo $(TEST)
Run Code Online (Sandbox Code Playgroud)

如果我运行make abc xxx,我期望输出abc

如果我运行make def xxx,我期望输出def

但事实并非如此。似乎make不允许我在目标中定义变量。我的问题是如何定义一个变量及其值(取决于构建的目标)?

gnu makefile

2
推荐指数
1
解决办法
3310
查看次数

将可选参数传递给 makefile

我有一个程序,我有这个 make 文件,我试图用这个 makefile 运行我的程序,它编译得很好,问题是当我运行该程序时,我应该像这样运行它,./user -n tejo.tecnico.ulisboa.pt -p 58011或者-n tejo.tecnico.ulisboa.pt这个-p 58011是可选的。

我看到这篇文章将参数传递给“make run”,但我不明白我在 make run 命令中做错了什么

那么谁能告诉我我的 makefile 有什么问题吗?

顺便说一句,我在制作 makefile 和使用命令行方面相当陌生。

程序:

# Makefile
CC   = g++
LD   = g++

AUXLIB = auxiliar_code/aux_functions.h
SOCKETLIB = socket_operations/socket_functs.h
COMMANDSLIB = commands/commands.h

.PHONY: all clean run

all: client

client: socket_operations/socket.o auxiliar_code/aux.o commands/commands.o commands/client.o main.o
    $(LD) -o user socket_operations/socket.o auxiliar_code/aux.o commands/commands.o commands/client.o main.o

auxiliar_code/aux.o: auxiliar_code/aux_functions.cpp $(AUXLIB) client_constants.h
    $(CC) -o auxiliar_code/aux.o -c auxiliar_code/aux_functions.cpp

commands/client.o: commands/Client.cpp $(COMMANDSLIB) …
Run Code Online (Sandbox Code Playgroud)

c++ makefile

2
推荐指数
1
解决办法
4135
查看次数

可以让"目标"采取争论吗?

让我说我正在做mk"目标"来构建一些东西.有可能传递一个参数吗?即mk"目标""x",它会做相应的事情吗?我知道我将提供mk"target"一个参数,我知道它的语义,只是提前不知道这个名字.

可能?

c makefile

1
推荐指数
1
解决办法
125
查看次数