无法弄清楚如何从 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:“无法弄清楚如何从光标读取此字段”