在Cygwin C ++中开发

时间:2014-08-15 16:56:19

标签: c++ linux windows cygwin

几年来,我在Visual Studio for Windows和Linux的GCC(代码块)中编写程序。我的大多数lib都是无缝编译的,因为它们在Windows和Linux中都可以工作。但是目前我有点困惑,因为我必须使用Cygwin创建一个应用程序。我真的不明白我是否仍然在UNIX / Linux环境中,只是通过某些“模拟”在Windows上运行应用程序,或者我更喜欢在Windows上访问某些Linux / Unix功能。根据我从FAQ和文档中的理解,我看起来应该像在Linux环境中一样。 我在互联网上找到的所有解释都非常笼统,并没有解释程序员观点的细微差别。

简短的问题:在使用Cygwin时,我可以像编写Linux一样编写程序而不会有任何重大变化吗?

2 个答案:

答案 0 :(得分:2)

<强>也许

为Linux编写的许多代码都将在Cygwin中编译,几乎没有问题,主要可以通过搞乱预处理器定义来修复。

但是,为linux编写的任何代码:

  • 使用Linux驱动程序
  • 直接访问内核
  • 依赖于执行这两项任务的任何代码(并且没有Windows对应的代码)
无论您修改了多少代码,

肯定无法正常工作。

很多尝试,Cygwin无法完全模拟(是的,它是一个模拟器,各种)POSIX系统通常可以做的一切。 Cygwin是窗口,只是来自其自己的机器语言的转换层。

有关详情,请参阅cygwin's wikia

答案 1 :(得分:1)

  

我可以像没有任何专业那样编写像Linux一样的程序   使用Cygwin时会发生什么变化?

平台不完全相同,所以你不能真实地期望在Linux中编写程序,然后 POOF 期望它在Cygwin下构建和工作。但是,如果您不使用Windows下不可用的内容,则不需要主要更改。并且你可以编写非平凡的程序,这些程序将在两者上构建和工作,可能需要在某些地方#ifdefs

从你的问题我认为你想在Linux上工作,但编写在Cygwin下运行的程序。在这种情况下,您还必须始终在Cygwin环境中构建和测试它,所以:

  • 使用版本控制,经常提交。我推荐像 git mercurial 这样的DVCS,它们具有单独的提交推送,它将允许你做提交更自由。
  • 每当您提交/推送时,请执行checkout / pull并在Cygwin主机上构建。您可以手动或自动执行此操作(通过简单的自定义脚本轮询版本控件,或通过Jenkins或其他方式)。
  • 当您的代码停止在Cygwin下构建或工作时,请在继续使用新代码之前修复它。

如果Cygwin不是绝对要求,那么我会考虑使用Qt SDK。它也可用于非Qt项目,Windows上的MinGW工具链与Linux上的 gcc 非常相似。如果您愿意使用Qt,那么它可以为您可能想要做的事情提供各种与平台无关的功能,例如发现用于保存文件的标准目录的位置,使用线程,打印内容,使用GUI ......