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

我正在做这样的事情:

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

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

【问题讨论】:

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

标签: nmake


【解决方案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。
      猜你喜欢
      • 2023-03-15
      • 2014-12-20
      • 2016-05-10
      • 2018-08-15
      • 2014-12-18
      • 2021-01-19
      • 1970-01-01
      • 2017-11-03
      • 1970-01-01
      相关资源
      最近更新 更多