Windows上的nmake行为

时间:2014-04-13 09:31:34

标签: c++ windows makefile nmake

overwiew

我想在Windows上使用nmake,但是如果不支持ifeq以实现我想要获得的东西。 OS detecting makefile

的解决方法

要解决ifeq不兼容问题,我决定使用 $(OS)属性。

include platf/$(OS)_make
  • windows应该包含 platf / Windows_NT_make
  • 其他平台,其中$(OS)返回“”,因此使用文件 platf / _make

目录布局

|   Makefile
+---platf
|       Makefile.linux
|       Makefile.macos
|       Makefile.win
|       Windows_NT_make
|       _make

问题

  • _make ,我有来自OS detecting makefile的相同例程,包括用于linux的makefile或mac等
  • Windows_NT_make 包括Makefile.win

这就像魅力,除了窗户再次。

#1如果文件platf / Windows_NT_make IS 存在,则会抱怨

  

makefile(4):致命错误U1052:文件'platf / $(OS)_make'未找到

#2如果文件platf / Windows_NT_make ,则会抱怨

  

makefile(4):致命错误U1052:找不到文件'platf / Windows_NT_make'

问题

所以,如果nmake能够决定$(OS)的值是什么(从#2看),为什么它会抱怨#1

1 个答案:

答案 0 :(得分:0)

问题是斜杠字符,它从Makefile名称描述了platf目录。 它需要是" /"对于unix家庭和" \"对于Windows。

您需要知道哪个操作系统正确形成了名称。这可以通过以下几种方式解决:

  1. 不使用子目录
  2. 单独制作CD,以便名称为本地
  3. 我通过使用一个makefile并使用可移植脚本文件来确定操作系统并适当地编辑Makefile(使用sed)来解决问题。使用一个脚本和一个makefile,我可以在所有系统中移动。