窗户上的正常行为
nmake behaviour on windows
概览
我想在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,它需要为"\"。
您需要知道哪个操作系统才能正确形成名称。这可以通过以下几种方式解决:
- 不使用子目录
- 制作单独的CD,使名称为本地名称
我通过拥有一个makefile并使用可移植的脚本文件来确定操作系统并适当地编辑makefile(使用sed)来解决这个问题。通过一个脚本和一个makefile,我可以在所有系统中移动。
相关文章:
- 从命令行c++发送文本文件名
- 使用新行和不使用新行读取文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 预处理器:插入结构名称中的前一个行号
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 使用一个考虑到std::map中键值的滚动或换行的键
- MSVC多行宏编译器错误
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- C++MySQL C api用户输入行
- 如何将 txt 文件中的行分隔为组件C++
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- 如何找到锁定Linux futex的C++行
- 在fstream期间忽略空行
- 具有N列和N行的矩阵,列必须具有N-1、N-2等值
- 遇到新行时,有没有办法停止istream_iterator
- 如何在文件和行号中抛出错误
- 如何在c++中从文本文件中逐行读取整数
- 数组长度,为什么从命令行获取时不能使用它?
- 如何防止clang格式在流运算符调用之间添加换行符<<