无法弄清楚如何从 nmake 读取文件

Posted

技术标签:

【中文标题】无法弄清楚如何从 nmake 读取文件【英文标题】:Can't figure out how to read file from nmake 【发布时间】:2010-09-19 10:05:40 【问题描述】:

我正在做这样的事情:

all: 
    @SET /p filecontent= < somefile.txt
    @echo %filecontent%

但是filecontent 变量似乎不包含文件somefile.txt 的内容。

【问题讨论】:

您希望如何处理这些内容?可能有更好的方法来做到这一点。 somefile.txt 是一个包含密码的单行文件,我不想在每个 makefile 中硬编码 【参考方案1】:

使用!INCLUDE 可以读取不是有效nmake 文件的文件。例如,如果我们有一个包含单行文本的版本文件version,我们可以这样做:

//version file
1.2.4

//makefile
VERSION= \
!INCLUDE <version>

如果文件包含多于一行,则无法正常工作。

【讨论】:

【参考方案2】:

只需确保somefile.txt 是可接受的nmake 语法,然后是!include 它。因此:

c:>type somefile.txt
PASSWORD=secret
c:>type makefile
!INCLUDE somefile.txt
!MESSAGE Password is [$(PASSWORD)]
c:>nmake -nologo
Password is [secret]

【讨论】:

【参考方案3】:

你可以试试这样的:

# ---- vitaly.mak ----

target1:
# create and invoke a temporary cmd file
@<<mygetpassword.cmd
 @echo off
 setlocal
 @SET /p filecontent= < secret.txt
 @echo %filecontent%
 endlocal
<<

#--- END ---

我认为a cmd/bat file run within nmake.exe cannot affect the environment of nmake。因此,您必须使用从临时 cmd 文件中的 secret.txt 中获取的密码。

【讨论】:

在这里撤消被误导的投票。 :) 问题本身的示例很混乱(没有显示 OP 真正 想要实现的目标),并且在严格的上下文中 actually 显示在那里,即规则的命令块,你的答案是正确的:那里(或“当时”)你真的不能再改变 NMAKE 宏了,AFAIK。

以上是关于无法弄清楚如何从 nmake 读取文件的主要内容,如果未能解决你的问题,请参考以下文章

Android Persistence room:“无法弄清楚如何从光标读取此字段”

从文本文件中读取和写入字符串

如何从数据文件中读取向量结构

如何在 NMAKE 中读取文本文件

如何使用 Files.lines(...).forEach(...) 读取文件?

从文件中读取N行