当前位置: 首页 > 面试题库 >

在Windows和类Unix系统之间有区别的Makefile

督劲
2023-03-14
问题内容

我想要在Linux和Windows上构建的相同Makefile。我在Linux上使用默认的 GNU make, 在Windows上使用
mingw32-make (也为 GNU make )。

我希望Makefile能够检测它是否在Windows或Linux上运行。

例如make clean,Windows上的命令如下所示:

clean:
    del $(DESTDIR_TARGET)

但是在Linux上:

clean:
    rm $(DESTDIR_TARGET)

另外,我想在Windows(\)和Linux(/)上使用不同的目录分隔符。

是否可以在Makefile中检测Windows操作系统?

PS: 我不想在Windows(cygwin等)上模拟Linux。


问题答案:

我通过寻找仅在Windows上设置的env变量来解决此问题。

ifdef OS
   RM = del /Q
   FixPath = $(subst /,\,$1)
else
   ifeq ($(shell uname), Linux)
      RM = rm -f
      FixPath = $1
   endif
endif

clean:
    $(RM) $(call FixPath,objs/*)

因为%OS%是Windows的类型,所以应该在所有Windows计算机上设置它,但不能在Linux上设置它。

然后,这些块为不同的程序设置变量,并为将正斜杠转换为反斜杠的函数设置变量。

调用外部命令时必须使用$(调用FixPath,path)(内部命令可以正常使用)。您还可以使用类似:

/ := /

然后

objs$(/)*

如果您更喜欢这种格式。



 类似资料:
  • 问题内容: 有人可以指出UNIX系统与UNIX系统之间的区别是什么。根据python文档中的定义: 返回路径的最后修改时间。返回值是一个数字,给出自纪元以来的秒数(请参见时间模块)。如果文件不存在或不可访问,请引发os.error。 返回系统的ctime,在某些系统(如Unix)上,它是最后一次更改的时间,而在其他系统(如Windows)上,它是路径的创建时间。返回值是一个数字,给出自纪元以来的秒

  • 本文向大家介绍Linux和Unix之间的区别,包括了Linux和Unix之间的区别的使用技巧和注意事项,需要的朋友参考一下 的Linux Linux是开源的多任务,多用户操作系统。它最初由Linus Torvalds于1991年开发。LinuxOS被广泛用于台式机,移动设备,大型机等。 的Unix Unix是多任务,多用户操作系统,但不是免费使用的也不是开源的。它是由AT&T贝尔实验室的Ken T

  • 本文向大家介绍操作系统和内核之间的区别,包括了操作系统和内核之间的区别的使用技巧和注意事项,需要的朋友参考一下 操作系统 操作系统管理计算机,并充当用户和计算机之间的接口。操作系统是启动计算机时启动的第一个程序。 核心 内核是操作系统的核心组件,负责将用户命令转换为机器级别的语言命令。 以下是操作系统和内核之间的重要区别。 序号 键 操作系统 核心 1 类型 操作系统是系统软件。 内核是操作系统的

  • 本文向大家介绍Unix和Windows中的系统调用,包括了Unix和Windows中的系统调用的使用技巧和注意事项,需要的朋友参考一下 进程和操作系统之间的接口由系统调用提供。通常,系统调用可用作汇编语言说明。它们也包含在汇编级程序员使用的手册中。 Unix系统调用 Unix中的系统调用用于文件系统控制,过程控制,进程间通信等。只能通过这些系统调用来访问Unix内核。通常,系统调用类似于函数调用,

  • 本文向大家介绍内核和操作系统之间有什么区别?,包括了内核和操作系统之间有什么区别?的使用技巧和注意事项,需要的朋友参考一下 操作系统 操作系统(OS)是管理计算机硬件资源并充当用户与计算机硬件之间的接口的软件集合。它为计算机程序提供通用服务。操作系统是计算机系统中系统软件的重要组成部分。 核心 内核是操作系统的核心部分,并负责该操作系统的所有主要活动。内核由各种模块组成,它直接与底层硬件交互。它还

  • 本文向大家介绍GPS和卫星导航系统之间的区别,包括了GPS和卫星导航系统之间的区别的使用技巧和注意事项,需要的朋友参考一下 全球定位系统 GPS或全球定位系统是美国国防部于1970年为满足陆军需求而开发的基于卫星的导航系统。随着时间的流逝,它已成为全球性的全球性公用事业,并且从移动设备到车载系统都被大量用于导航目的。GPS具有由24颗人造卫星组成的星座,这些人造卫星环绕地球运行。GPS卫星通过在六