pmo*_*mod 2 linux windows makefile environment-variables detection
当makefile需要在不同的OS上运行并且应该根据操作系统正确设置各种设置(转义,路径分隔符等)时,会出现问题.第一种方法是使用Windows COMSPEC:
ifneq ($(COMSPEC)$(ComSpec),)
## in windows
else
## in linux
endif
Run Code Online (Sandbox Code Playgroud)
这对于Cygwin来说是误报,因为它看到了Windows的环境变量,并将Cygwin视为Windows.然后我们尝试了Linux PWD:
ifeq ($(PWD),)
## in windows
else
## in linux, cygwin
endif
Run Code Online (Sandbox Code Playgroud)
但是,由于异地工具的集成,我们在Windows中设置了PWD(perl的模块之一).因此,检测再次失败.
我想知道,使用环境变量区分Cygwin,Linux,Windows的最佳方法是什么?
Cygwin和(在Ubuntu上测试)Linux提供了一个$OSTYPE环境变量,设置cygwin为Cygwin和linux-gnu(Ubuntu)Linux.
Windows没有此变量,因此它似乎是您唯一需要的变量.我想你的 Linux 可能没有提供它,在这种情况下你可以$OSTYPE用来区分Windows和Cygwin,然后再回到unameCygwin和Linux.
| 归档时间: |
|
| 查看次数: |
4667 次 |
| 最近记录: |