- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下示例 makefile 按预期工作,使用 vpath
查找目标文件和源文件。但是在最后一行,我告诉 make 一个目标文件对另一个目标文件的依赖性,我需要指定先决条件文件的目录 $(objd)/
,否则我会得到一个错误(请参阅代码下方的错误消息)。为什么 vpath
指令在最后一行中不够用?
# Program Name
prog = avpar
#dirs
objd=obj
modd=mod
# extra places to search for prerequisites
vpath %.f90 ../modules
vpath %.o obj/
# etc
FC = gfortran
flags = -I$(modd) -J$(modd) #-fopenmp
obj_files = $(prog).o rw_mod.o
# compile
p$(prog): $(obj_files)
$(FC) $(flags) $^ -o $@
$(objd)/%.o: %.f90
$(FC) $(flags) -c $< -o $@
$(objd)/$(prog).o: $(objd)/rw_mod.o
即将最后一行改为:
$(objd)/$(prog).o: rw_mod.o
给出错误:
make: *** No rule to make target 'rw_mod.o', needed by 'obj/avpar.o'. Stop.
编辑使用这种形式的最后几行它也可以工作,没有目录规范:
#compile
p$(prog): $(obj_files)
$(FC) $(flags) $^ -o $@
$(objd)/rw_mod.o: rw_mod.f90
$(FC) $(flags) -c $< -o $@
$(objd)/$(prog).o: $(prog).f90 rw_mod.o
$(FC) $(flags) -c $< -o $@
最佳答案
vpath
只能用于查找存在的先决条件。
Use
VPATH
to locate the sources from the objects directory, not to locate the objects from the sources directory.
没有匹配 rw_mod.o
的规则,所以 obj/avpar.o
的规则失败,vpath
不会在先决条件规则查找,它在这里工作的唯一方法是如果 obj/rw_mod.o
已经存在。
无论如何,规则不太可能是正确的,为什么一个目标文件会依赖于另一个目标文件?
关于makefile - make 'vpath' 指令,为什么它不足以满足这个先决条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38405827/
我正在尝试通过将源路径添加到 vpath/VPATH 来使用我的 Makefile ( Make for Windows )。这看起来微不足道,但由于某种原因我无法让它工作 我的目录结构是这样的: ├
我的 C++ 项目的源文件组织在 ./src 的嵌套子目录中。我的 makefile 中有一个模式规则,它将所有 .cpp 源文件编译成对象: $(OBJDIR)/%.o: %.cpp makefil
我有一个具有以下目录结构(简化)的项目: configure.ac Makefile.am samples src/Makefile.am tests/openssh_keys tests/Makef
我正在尝试编译和汇编,然后链接一些源文件。据我所知,在我第二次运行它之前,它不会告诉链接器使用 VPATH 中的路径。这是生成文件: #Makefile for SWS ARMKern CC=arm-
尝试练习一下,因为稍后我需要编写一个 makefile。我有以下文件夹结构 ./Folder1/header1.h ./Folder1/src1.c ./Folder2/header2.h ./Fol
我试图在我的 Makefile 中使用 vpath 来避免为每个源文件添加目录名前缀。但我无法让它正常工作。 这是生成文件: CC=gcc -Wall vpath %.h include vpath
以下示例 makefile 按预期工作,使用 vpath 查找目标文件和源文件。但是在最后一行,我告诉 make 一个目标文件对另一个目标文件的依赖性,我需要指定先决条件文件的目录 $(objd)/
当我使用 make 时,它说 gcc -I./header -c -g main.c gcc: error: main.c: No such file or directory 我的 makefi
在过去的 2 年左右的时间里,我一直在从事编程工作,我终于“摆脱了控制台”,但在这样做的同时,我也想独立于 IDE,因此,我一直学习 make 但这是一个问题,我似乎无法找到有关“vpath”的答案
我们一直在尝试使 VPATH 或 vpath 搜索包含空格字符的目录,但没有成功。 我的 makefile 包含: vpath %cpp RTW/ModelRTW RTW/StandardTests
我有一个非常小的包含内容的 make 文件 VPATH = src main: main.o gcc -o main main.o main.o: main.c gcc
我正在使用 automake 进行 VPATH 构建。我现在也在使用生成的源代码和 SWIG。我有规则Makefile.am喜欢: dist_noinst_DATA = whatever.swig w
在以下网站中 https://make.mad-scientist.net/papers/how-not-to-use-vpath/ 作者说: VPATH was designed to find s
我正在尝试使用 GNU make(版本 3.81)构建一个小型 C++ 项目,但我必须调用 make 两次,因为第一次运行失败。这是我的项目目录: project makefile i
我使用 vpath 编写了简单的 makefile COMMON_CFLAGS = -Wall -O2 -DA2CSCC=0 CFLAGS = $(COMMON_CFLAGS) -I/usr/incl
1) 我有一个名为 dir 的目录,子目录是 sub1、sub2、sub3。 2) 我想创建一个 Makefile 来编译子目录中的所有源代码。这些是我的 makefile 的一些行。 CFLAGS
我正在使用以下 vpath 尝试定位我的 $(OBJ) 文件: vpath %.o ./lib/obj 我的目标是这样设置的: # Link target link: @echo "\nLin
想象一下这个结构: root/ | +-- include/ +-- src/ +-- build/ +-- lib/ +-- tests/ | +-- common +--
我是一名优秀的程序员,十分优秀!