我有一个大问题..我在 Linux 操作系统中使用 linux make 文件编译了我的 c 文件。
我想在 Windows 中通过命令提示符使用相同的 make 文件编译相同的文件。为此,我也有 nmake 实用程序和 Cygwin 实用程序。
我已经用简单的程序和简单的 make 文件成功地做到了这一点..
但是当我使用复杂的 C 文件和复杂的 make 文件时,编译是不可能的。
我已经将 linux make 文件中的 '/' 更改为 Windows 中的 '\'?还有其他变化吗?
我想知道'Windows 中是否有任何特殊的 make 文件格式?'
还有它们之间的区别..
我真的很需要那个...
请您参考如下方法:
不幸的是,nmake 只是从 make 中得到了松散的启发,他们没有把很多重要的事情做对。到目前为止,最简单的做法是从在两个平台上使用相同风格的 make 开始。
在 Linux 上,Gnu make 是默认的最佳选项。
在 Windows 上,有多个 Gnu make 源,其中有一些怪癖可供选择。就个人而言,我主要使用 native win32 build of Gnu make from the GnuWin32 project .您可能想查看项目的其余包,因为其他一些包也很有用。
替代来源是 Cygwin和 MinGW32/MSYS .
Cygwin 是在 Windows 内核之上提供 *nix 兼容性环境的可靠尝试。它由一个 DLL 组成,该 DLL 导出大量通过 Windows API 实现的 *nix(尤其是 POSIX)系统调用。该 DLL 对磁盘安装也有自己的想法,并且更喜欢 *nix 风格的路径名。 DLL 本身是 GPL 许可的(尽管商业用途许可是收费的),在 Cygwin 环境中构建的程序默认需要它,因此这是一个需要考虑的因素。另一个因素是 Cygwin 对普通 Windows 用户不友好,因此基于它的开发项目通常最终对非 unix 用户来说很难处理。然而,对于跨平台开发人员来说,Cygwin 可能非常有用,因为它可以为您提供 Makefile 所需的所有常见的可疑实用程序,并且它包括针对 Cygwin 环境的 MinGW32 native Windows 目标 GCC 以及目标 GCC。
MinGW32 是一个移植项目,它在移植 GCC 编译器以作为 native Windows 可执行文件运行方面做得非常好。如果与它们提供的头文件一起使用,则可以通过现代 Windows 安装附带的 C 运行时 DLL 使用几乎所有 Windows API。
MSYS 是 Cygwin 的轻量级分支,包含一组最小的实用程序(从 *nix shell 开始),这些实用程序通常被典型的 *nix Makefile 假定存在。与 Cygwin 不同,MSYS 配置为默认目标是 native Windows API。
我想在这里暗示的是,您的兼容性问题不会随着您使用的方言而结束。
Makefile 语言本高度度依赖于可用的命令 shell,大多数严肃的项目 Makefiles 最终使用许多 *nix 核心实用程序,如 cp 和 rm。
我强烈建议从 make 的 GnuWin32 构建开始,同时安装 MinGW32 和 MSYS。然后编写一个在 MSYS 和 linux 下都可以工作的 Makefile 相对容易,并且只需要少量特定于平台的逻辑。