- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 Makefile 来运行 docker run
目标,该目标需要当前工作目录作为其参数之一。
我使用 $(PWD)
或 $(CURDIR)
:
build: Dockerfile
docker run ... <$(PWD) or $(CURDIR)>
它们似乎产生了相同的值(value)。我不知道是否存在稍后会困扰我的细微差别,所以我想知道它们各自的确切定义。
人使
Makefile 中的 $(PWD)
和 $(CURDIR)
有什么区别?
最佳答案
使用CURDIR
。
首先,谢谢Renaud Pacalet对于 his comment .
CURDIR
引用GNU Make Manual :
CURDIR
Set to the absolute pathname of the current working directory.
For your convenience, when GNU make starts (after it has processed any -C options) it sets the variable CURDIR to the pathname of the current working directory. This value is never touched by make again: in particular note that if you include files from other directories the value of CURDIR does not change. The value has the same precedence it would have if it were set in the makefile (by default, an environment variable CURDIR will not override this value). Note that setting this variable has no impact on the operation of make (it does not cause make to change its working directory, for example).
密码
Make 手册中没有提及 PWD
。快速 env | grep PWD
发现它是由环境设置的(在我的例子中是 zsh)。 GNU 关于 Special Shell Variables 的注释声明:
PWD
Posix 1003.1-2001 requires that cd and pwd must update the PWD environment variable to point to the logical name of the current directory, but traditional shells do not support this. This can cause confusion if one shell instance maintains PWD but a subsidiary and different shell does not know about PWD and executes cd; in this case PWD points to the wrong directory. Use ``pwd
' rather than
$PWD'.
由于 CURDIR
保证在 PWD
中的 Make
中工作,可能是从 shell 继承的,前者应该是首选。
关于makefile - 重击 : What is the difference between PWD and CURDIR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52437728/
我有一个 Makefile,它针对特定目标调用另一个 Makefile。假设主 Makefile 包含 some_dir/some_target: cd some_dir && make so
这两个文件大多出现在开源项目中。 它们的用途是什么?它们如何工作? 最佳答案 Makefile.am 是程序员定义的文件,由 automake 使用来生成 Makefile.in 文件( .am 代表
我的源代码位于一堆子目录中,例如: src/widgets/apple.cpp src/widgets/knob.cpp src/tests/blend.cpp src/ui/flash.cpp 在项
这就是我所拥有的: SUBDIRS = src/lib/ResourceManager all: $(SUBDIRS) $(SUBDIRS): make install -C $@ 我正在尝试
我想写一个 Makefile 来执行来自两个不同数组的两个输入的命令例如 a = A B C b = 1 2 3 ./run A 1 ./run B 2 ./run C 3 我不知道怎么写,因为在Ma
在 GNU make 手册的早期部分之一,Section 3.7 , 有一个 makefile 配方的大纲 immediate : immediate ; deferred defer
是否存在将 gmake 的 GNU Makefile 转换为可用于 make (FreeBSD-make) 的 Makefile 的实用程序? 最佳答案 该实用程序称为开发人员(程序员,制作大师,..
所以我前段时间了解了什么是 Makefile,创建了一个模板 Makefile,我所做的就是为我正在执行的每个程序复制和更改相同的文件。我改了几次,但它仍然是一个非常粗糙的Makefile。我应该如何
我正在做一些 Makefile 重构,并试图找出最简洁的方法来实现一个 Makefile,它执行以下操作: 有一个变量列出了所有源文件(可以是 C 和 C++ 文件) 所有目标文件都在 OBJ_DIR
我正在尝试创建一个 Makefile,它将通过 tic 编译位于目录中的 terminfo 文件。 tic 还将它自动创建的 termcap 文件复制到系统或用户特定的目标文件夹。对于普通用户,如果
我想要类似的东西 BROKEN_THINGS = \ thing1 \ # thing1 is completely broken thing2 \ # thing2 is broken to
如果我的程序必须为不同的结果(主要是错误)返回不同的值(例如 0、1、2、3 等),则调用该程序的 makefile 将不得不停止执行其余的 makefile 命令。即使该命令产生错误(返回非零值),
我正在学习使用漂亮的 Linux 工具:make。还有一点我想了解的: 让我们看一下这个简单的例子: JADE = $(shell find pages/*.jade) HTML = $(JADE:.
假设您有一个包含两个伪目标“all”和“debug”的 Makefile。 'debug' 目标旨在构建与 'all' 相同的项目,除了一些不同的编译开关(例如 -ggdb)。由于目标使用不同的编译开
我有一个调用多个其他生成文件的生成文件。 我想将 -j 参数传递给其他 makefile 调用。 类似(make -j8): all: make -f libpng_linux.mk -j
我处理过的 Makefile 大部分都很复杂,并且隐藏了很多关系。我自己从来没有写过一个,想知道是否有人有一些关于编写易于阅读和可重用的 Makefile 的提示? 最佳答案 我通常使用这样的东西,在
嘿,我有一个简单的“主” Makefile,它只是调用其他 makefile。我正在尝试执行以下操作,以便以正确的顺序构建组件: LIB_A = folder_a LIB_B = folder_b L
生成文件: #there is a whitespace after "/my/path/to" FOO = "/my/path/to" BAR = "dir" INCLUDE_DIRS = $(FO
我正在学习 makefile,我知道如何创建一个简单的 makefile。我正在继续使用嵌套的 makefile。这是我的目录结构 /src ...makefile ...main.cpp ...fo
什么TEMP0_FILES下面计算到? SOURCE_FILES可以等于多个源文件。请告诉我以下语法 :.cpp=.o 的用途 SOURCE_FILES = main.cpp TEMP0_FILES
我是一名优秀的程序员,十分优秀!