- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编译一些第三方代码并遇到了一些奇怪的 NMAKE 行为。
Makefile 中的行是
cholmod_aat.o: ../Core/cholmod_aat.c
$(C) -c $(I) $< -Fo$@
产生以下错误:
Wed, Aug 15 2012 23:25:20 ../Include/cholmod.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_blas.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_check.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_cholesky.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_complexity.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_config.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_core.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_internal.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_matrixops.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_modify.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_partition.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_supernodal.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_template.h
Fri, Aug 17 2012 16:06:24 ../Core/cholmod_aat.c
cholmod_aat.o target does not exist
NMAKE : warning U4006: special macro undefined : '$<'
cl -O2 -nologo -D__MINGW32__ /MD -DNPARTITION -c -I../../AMD/Include -I.
./../AMD/Source -I../../COLAMD/Include -I../../metis-4.0/Lib -I../../CCOLAMD/In
clude -I../../CAMD/Include -I../Include -I../../UFconfig -Focholmod_aat.o
cl : Command line error D8003 : missing source filename
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
为什么 nmake 在预先将 cholmod_aat.c 列为依赖项时说 '$<' 是“未定义”?更令人困惑的是,如果我将 $< 替换为 $?在 makefile 中,nmake 扩展了“$?”就好了:
Wed, Aug 15 2012 23:25:20 ../Include/cholmod.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_blas.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_check.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_cholesky.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_complexity.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_config.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_core.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_internal.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_matrixops.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_modify.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_partition.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_supernodal.h
Wed, Aug 15 2012 23:25:20 ../Include/cholmod_template.h
Fri, Aug 17 2012 16:06:24 ../Core/cholmod_aat.c
cholmod_aat.o target does not exist
cl -O2 -nologo -D_<em>MINGW32</em>_ /MD -DNPARTITION -c -I../../AMD/Include -I.
./../AMD/Source -I../../COLAMD/Include -I../../metis-4.0/Lib -I../../CCOLAMD/In
clude -I../../CAMD/Include -I../Include -I../../UFconfig ../Include/cholmod.h .
./Include/cholmod_blas.h ../Include/cholmod_check.h ../Include/cholmod_cholesky.
h ../Include/cholmod_complexity.h ../Include/cholmod_config.h ../Include/cholmod
_core.h ../Include/cholmod_internal.h ../Include/cholmod_matrixops.h ../Include/
cholmod_modify.h ../Include/cholmod_partition.h ../Include/cholmod_supernodal.h
../Include/cholmod_template.h ../Core/cholmod_aat.c -Focholmod_aat.o
这是怎么回事?
最佳答案
答案在MSDN上:
$< - Dependent file with a later timestamp than the current target. Valid only in commands in inference rules.
它不在“推理规则”中,它在“描述 block ”中,因为这些东西在 NMAKE 中被调用。
--- 编辑: 扩展我原来的答案---
术语有点奇怪,所以在这种情况下,最容易通过示例来说明。我创建了一个包含 2 条规则的 makefile - 一个描述 block (又名目标规则)和一个推理规则。
C:\temp>type makefile.txt
c.txt : a.txt b.txt
@echo $?
@echo %s
.SUFFIXES: .log
.log.txt:
@echo $<
我为虚拟输入创建了空文件 a.txt、b.txt 和 d.log。然后我在 objective-c .txt 和 d.txt 上运行了 makefile:
C:\temp>nmake /f makefile.txt c.txt d.txt
Microsoft (R) Program Maintenance Utility Version 12.00.21005.1
Copyright (C) Microsoft Corporation. All rights reserved.
a.txt b.txt
a.txt
d.log
C:\temp>
希望这能说明 $?、%s 和 $< 之间的区别。 MSDN 文档相当简洁,但代码确实如文档所述那样工作。诚实!
关于nmake - Microsoft nmake : $? 扩展但 $< 不,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12009439/
我正在做这样的事情: all: @SET /p filecontent= type somefile.txt PASSWORD=secret c:>type makefile !INCLUDE
我的构建过程需要一个小的 nmake makefile。文件类型为 TXT 和 PDF。因此,我在我的 makfile 中添加了一个推理规则。但是 nmake 完全忽略了它。怎么了? Number=1
我正在将 GNU Make makefile 转换为 Microsoft Visual Studio Makefile。我有三个疑问: 1) 如何替换字符串。例如在包含以下内容的文件夹中: names
我正在尝试编译一些第三方代码并遇到了一些奇怪的 NMAKE 行为。 Makefile 中的行是 cholmod_aat.o: ../Core/cholmod_aat.c $(C) -c
我正在尝试编译一些第三方代码并遇到了一些奇怪的 NMAKE 行为。 Makefile 中的行是 cholmod_aat.o: ../Core/cholmod_aat.c $(C) -c
我有一个包含顶级 makefile 和三个子文件夹的项目,每个子文件夹中都有一个 makefile。 在普通的 makefiles (gnu make) 中我可以这样做: # Just for me
如果我这样做,我认为在 nmake 中: example : set value=77 echo %%value%% 结果将在控制台上显示 77。 有没有办法调用 .
当我在命令提示符中键入 nmake 命令时,出现此错误: 'nmake' is not recognized as an internal or external command operable p
我正在尝试使用 cmake 和 CLion 构建一个 C++ 项目,但我遇到了一些我无法理解的错误: "C:\Program Files\JetBrains\CLion 2019.2.5\bin\cm
我在VS 2012控制台中使用nmake来编译GDAL,我想知道哪个命令可以帮助我删除上一次由nmake命令生成的所有文件。 c:\gdal>nmake clean Microsoft (R) Pro
我看到了两个与我的问题相似的话题,但都没有找到对我有帮助的答案。 我得到了一台运行 Windows 7 Enterprise SP1 64 位的新笔记本电脑,我在上面安装了 Active Perl 5
我注意到了 nmake.exe将其推理规则搜索限制为一个丢失的文件。我发现网上没有提到这个问题。我错过了什么吗? $ cat 生成文件 .后缀:.a .b .d .e 全部:abc.e .a.b: 复
实用程序:NMake 平台:Windows 7 我有以下 Makefile FILE = $(shell) *.c FILE += $(shell) *.cpp exec: @echo $(F
我有一个 Nmake 的 Makefile,其中包含宏中的文件列表: MYSRCFILES1=myfolder\file1.svg myfolder\file2.svg ... myfolder\fi
我想知道当当前目录位于调试文件夹中时,是否可以从命令提示符运行 nmake。我发现更改到以前的文件夹只是为了运行 nmake 然后返回调试文件夹以运行可执行文件是很乏味的。 debug release
您好,我决定尝试学习如何通过命令行和 makefile 构建程序,而不是依赖 Visual Studio 来为我构建程序。在熟悉了编译成 .obj 文件和链接的过程后,我转向了 NMake。我编写了一
我刚买了一台新的四核计算机,发现 nmake 只使用了一个进程。 我曾经使用带有开关 -j4 的 make 来启动 4 个进程。什么是 nmmake 等价物? [编辑]根据以下信息,我已经能够将命令添
我正在使用 NMake 制作联编文件。我有一些实用程序可以运行以将一个文件转换为 CPP 文件。该实用程序需要在 session 期间设置特定的 Windows 环境变量。我可以在 Makefile
大家好! 我正在尝试编译一些外部库作为编译 MESHLAB(用于 3d 网格处理的工具)源代码的先决条件。 首先,我使用“qmake”命令从我的项目文件 (external.pro) 生成 Makef
这个问题在这里已经有了答案: Using nmake with wildcards in the makefile (2 个答案) 关闭 2 年前。 我有 UNIX 背景,所以我习惯于在 GNU/M
我是一名优秀的程序员,十分优秀!