问题 Visual Studio中的Cygwin


我正在尝试使用Cygwin作为个人学习练习将我在Ubuntu中为KDev编写的旧程序移植到Windows Visual Studio 2008。我已将include路径配置为包含 C:\cygwin\usr\include 但它没有正确读取.h文件。

即我很好奇如何使用unix sockets.h 使用Cygwin在Visual Studio环境中的功能。有没有人有这个工作或有一个更简单的方法去做这个?


11787
2017-12-18 04:39


起源

欢迎使用Stack Overflow。首先,如何 不 它读取标题,如果不正确?请更准确。 (描述它的功能,而不是它不会做什么。)其次,如何使用套接字与第一个问题无关,关于如何正确读取标头。请考虑将您的第二段移至新问题。你会得到更好的答案(加上更多的声誉点机会)。 - Rob Kennedy
我不确定你要做什么会起作用。 Cygwin头文件和库适用于使用gcc而不是MSVC进行编译。 - ZoogieZork


答案:


根据您的具体目标,有几种方法可以实现。最简单的方法可能只是创建一个Visual Studio“makefile”项目,它触发一个自定义构建命令来运行你构建的makefile。但是,这使您远离Visual Studio作为IDE的很多好处,所以我猜这不是你真正想要的。

如果您想要一个更完全集成的解决方案,那么您将需要做两件事。首先,您将需要更改所有的include / library路径以避开Microsoft的路径,而是转而使用Cygwin路径。您可以通过从菜单中选择“工具 - >选项”,然后从出现的窗口左侧的树中选择“项目和解决方案 - > VC ++目录”来完成此操作。您可以选择更改可执行文件,标题,库等的搜索目录。对于您要执行的操作,我建议您删除 一切 并添加只是cygwin目录。

其次,您必须告诉Visual Studio使用gcc / g ++编译器。这有点棘手。 VS支持自定义文件类型的自定义构建规则......但似乎C ++已经为Microsoft编译器硬连线。除了使用您自己的自定义文件扩展名外,我真的不太了解它。您可以尝试.c(C文件)和.cc(C ++文件)的标准unix扩展,但我怀疑Visual Studio会自动接收这些扩展。你可能不得不采取完全陌生的东西。

如果在解决方案资源管理器中右键单击项目并选择“自定义构建规则”,您将获得一个界面,可以为您选择的文件扩展名创建自定义构建规则。界面相对简单。

这可能无法满足您的需求,但它可能与您使用Visual Studio的时间差不多。


8
2017-12-18 06:02



自定义扩展和构建规则在稍微调整后工作,我之前没有使用自定义构建规则,所以我甚至没有想到这一点。这不是一个完美的解决方案,它绝不是一种有效的方式来做事,但这更像是一种学习经验来测试极限和发现新事物而不是任何实际的东西。 - WarrenB


简单地说, 不要那样做。这只是浪费时间。我试了好几次,但总是失败了。大多数情况下,我对许多链接错误感到沮丧,也无法使用VS作为调试器。

您可以使用Visual Studio编辑和浏览源代码。这很好,因为VS提供了最好的C / C ++智能感知功能(例如,自动完成,快速进入定义/声明)。但是,在Visual Studio 2008中使用cygwin工具链非常困难。 Visual Studio 2008不适用于其他工具链。具体来说,您需要更改(1)标头,(2)库,(3)编译器和(4)链接器。但是,它通常非常难,或者您需要使用Visual Studio的优秀功能进行权衡。

Visual Studio最强大的功能是它的调试功能,例如完全集成的调试环境和非常容易观察的窗口(例如,您可以直接在监视窗口中看到STL矢量元素)。但是,如果您要更改基本工具链,则无法执行此操作(尽管我非常怀疑甚至可以使用Visual Studio和cygwin工具链安全地构建)。

不幸的是,目前的Visual Studio 2008不适用于cygwin / MinGW。


5
2017-12-18 06:17