2009-12-18 6 views
11

J'essaie de porter un ancien programme que j'ai écrit pour la classe de KDev dans Ubuntu à Windows Visual Studio 2008 en utilisant Cygwin comme un exercice d'apprentissage personnel. J'ai le chemin d'inclusion configuré pour inclure C:\cygwin\usr\include mais il ne lit pas les fichiers .h correctement.Cygwin dans Visual Studio

À savoir, je suis curieux de savoir comment on pourrait utiliser la fonctionnalité unix sockets.h dans un environnement Visual Studio en utilisant Cygwin. Quelqu'un a-t-il déjà travaillé ou a-t-il eu un moyen plus facile d'y arriver?

+0

Bienvenue dans Stack Overflow. D'abord, comment * lit-il les en-têtes, sinon correctement? S'il vous plaît soyez plus précis. (Décrivez ce qu'il fait, pas ce qu'il ne fait pas.) Deuxièmement, comment utiliser les sockets n'a rien à voir avec le premier problème, concernant la façon de lire correctement les en-têtes. S'il vous plaît envisager de déplacer votre deuxième paragraphe à une nouvelle question. Vous obtiendrez de meilleures réponses à ces deux moyens (plus d'opportunités pour les points de réputation). –

+0

Je ne suis pas sûr que ce que vous essayez de faire fonctionnera. Les en-têtes et bibliothèques Cygwin sont orientés vers la compilation avec gcc plutôt qu'avec MSVC. – ZoogieZork

Répondre

8

Il y a plusieurs façons de faire cela qui pourraient fonctionner, en fonction de vos objectifs précis. Le moyen le plus simple est probablement de créer un projet "makefile" Visual Studio qui déclenche une commande de construction personnalisée pour exécuter un makefile que vous avez construit. Mais cela vous éloigne de beaucoup des avantages de Visual Studio en tant qu'EDI, donc je suppose que ce n'est pas vraiment ce que vous recherchez.

Si vous voulez une solution plus intégrée, vous devez faire deux choses. Tout d'abord, vous aurez besoin de changer tous vos chemins d'inclusion/bibliothèque pour éviter les Microsoft et aller après ceux de Cygwin à la place. Vous pouvez le faire en sélectionnant "Outils-> Options" dans le menu, puis en choisissant "Projets et Solutions-> Répertoires VC++" dans l'arborescence sur le côté gauche de la fenêtre qui apparaît. Vous aurez des options pour changer les répertoires de recherche pour les exécutables, en-têtes, bibliothèques, etc. Pour ce que vous essayez de faire, je suggérerais de supprimer tout et d'ajouter seulement les répertoires cygwin. Deuxièmement, vous devrez indiquer à Visual Studio d'utiliser le compilateur gcc/g ++. C'est un peu plus compliqué. VS prend en charge les règles de génération personnalisées pour les types de fichiers personnalisés ... mais il semble que C++ soit câblé pour le compilateur Microsoft. Je ne connais pas vraiment un bon moyen de contourner cela, sauf pour utiliser votre propre extension de fichier personnalisé. Vous pouvez essayer les extensions unix standard de .c (fichiers C) et .cc (fichiers C++), mais je suppose que Visual Studio va automatiquement prendre en charge ceux-ci. Vous devrez peut-être aller avec quelque chose de totalement étranger. Si vous faites un clic droit sur votre projet dans l'Explorateur de solutions et sélectionnez "Règles de construction personnalisées", vous recevrez une interface qui vous permettra de créer vos règles de construction personnalisées pour l'extension de fichier que vous avez choisie. L'interface est relativement simple à partir de là.

Cela pourrait ne pas vous donner exactement ce que vous vouliez, mais c'est probablement aussi proche que vous le feriez avec Visual Studio.

+0

Les extensions personnalisées et les règles de construction ont fonctionné après un peu de peaufinage, je n'ai pas travaillé avec des règles de construction personnalisées auparavant, donc je n'y ai même pas pensé. Ce n'est pas une solution parfaite et ce n'est en aucun cas un moyen efficace de faire les choses, mais cela était plus une expérience d'apprentissage pour tester les limites et découvrir de nouvelles choses que n'importe quoi de pratique. – WarrenB

4

Pour simplifier, ne faites pas cela. Ce serait juste une perte de temps. Je l'ai essayé plusieurs fois, mais j'ai toujours échoué. La plupart du temps, j'étais frustré par de nombreuses erreurs de liaison, et je ne pouvais pas non plus utiliser VS en tant que débogueur.

Vous pouvez utiliser Visual Studio pour modifier et parcourir le code source. C'est sympa parce que VS fournit les meilleures fonctions intellisense C/C++ (par exemple, achèvement automatique, aller rapidement à la définition/déclaration). Mais, il est très difficile d'utiliser les chaînes d'outils cygwin avec Visual Studio 2008. Visual Studio 2008 n'est pas conçu pour fonctionner avec d'autres chaînes d'outils. Plus précisément, vous devez modifier (1) les en-têtes, (2) les bibliothèques, (3) le compilateur et (4) l'éditeur de liens. Cependant, il est généralement très difficile, ou vous devez échanger avec les fonctionnalités intéressantes de Visual Studio. La caractéristique la plus importante de Visual Studio est sa capacité de débogage, comme un environnement de débogage entièrement intégré et des fenêtres de surveillance très faciles (par exemple, vous pouvez voir l'élément du vecteur STL directement dans les fenêtres de surveillance). Cependant, vous ne pouvez pas le faire si vous changez la chaîne d'outils fondamentale (bien que je sois très méfiant, il est même possible de construire en toute sécurité avec Visual Studio et les chaînes d'outils cygwin).

Malheureusement, Visual Studio 2008 actuel n'est pas compatible avec Cygwin/MinGW.