窗户上的正常行为

nmake behaviour on windows

本文关键字:常行 窗户      更新时间:2023-10-16

概览

我想在windows上使用nmake,但由于ifeq不受支持而无法实现我想要实现的目标。操作系统检测生成文件

变通方法

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

include platf/$(OS)_make
  • 它应该包括platf/windows_NT_make的窗口
  • $(OS)返回"的其他平台,因此使用文件platf/_make

目录布局

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

问题

  • _make,我有来自操作系统的相同例程检测makefile,并包括linux或mac等的makefile
  • Windows_NT_make包括Makefile.win

这很有魅力,除了窗户。

#1如果文件平台/Windows_NT_makeIS存在,则向投诉

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

#2如果文件platf/Windows_NT_make不存在,则会向投诉

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

问题

因此,如果nmake能够决定$(OS)的值是多少(从#2可以看出),那么它为什么会抱怨#1

问题在于从Makefile名称中描述platf目录的斜杠字符。对于unix系列,它需要是"/",对于Windows,它需要为"\"。

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

  1. 不使用子目录
  2. 制作单独的CD,使名称为本地名称

我通过拥有一个makefile并使用可移植的脚本文件来确定操作系统并适当地编辑makefile(使用sed)来解决这个问题。通过一个脚本和一个makefile,我可以在所有系统中移动。