MinGW g++ n'est pas de trouver les en-têtes dans son propre répertoire

Donc, j'ai récemment installé MinGW via la dernière version de nuwen de MinGW distribution qui comprend les bibliothèques boost C++. Plus précisément, j'ai été après la scoped_ptr que la bibliothèque boost fournit. Cependant, lorsque j'essaie d'inclure le scoped_ptr (#include <boost/scoped_ptr.hpp>) dans l'en-tête, le compilateur renvoie

error: boost/scoped_ptr.hpp: No such file or directory

Makefile:

compile:
    g++ -o gen/cavestory src/**.cc 
run:
    gen/cavestory

Aussi, j'ai ajouté une version de SDL répertoire include de MinGW sous SDL/**. Tous les fichiers d'en-tête sont là, j'ai vérifié, et le compilateur renvoie une erreur similaire sur mon include SDL/SDL.h>.

Choses que j'ai essayé:

Chaque variation de <> et "" dans mon incluent les déclarations

Retrait de la .h et .hpp

Réglage de l'drapeaux du compilateur spécifiquement pour rechercher les répertoires contenant les en-têtes avec g++ -I

Ce code a été la compilation avec une version antérieure de MinGW, et l'auteur de la MinGw distrobution précise qu'il a changé le compilateur g++ options par défaut en C++11, donc je pense qu'il est très probable que c'est quelque chose à voir avec cela. Mon google-fu n'a pas donné de résultats, bien que.

  • Votre mingw peut-être dans l'ombre.
  • Essayez ", qui g++" dans le fichier de créer de comprendre qui est chargé. Par ailleurs, vous ne devriez pas être coder en dur "g++" dans votre Makefile. C'est une mauvaise forme. Voir: sites.google.com/site/michaelsafyan/software-engineering/...
  • Est l'actuel emplacement de l'installation la même que la précédente et qui a fonctionné? Vous pouvez toujours être à la recherche dans les anciens dossiers pour les fichiers. Un moyen rapide, indolore vérifier serait de copier le coup de pouce dossier dans le courant de l'installer dans le dossier inclure de l'installation précédente (en supposant, bien sûr, que la réponse à ma première question était non)
  • La syntaxe pour qui?
  • Oui, les deux installations sont situées à C:\MinGW\. Lors de l'installation de la mise à jour j'ai nettoyé le répertoire MinGw complètement.
  • Il pourrait être utile d'utiliser le Moniteur de Processus (disponible à partir de la MS, site web) pour voir où MinGW est à la recherche quand il ne parvient pas à trouver les fichiers en question.
  • Créer un vide empty.c fichier, puis lancez la commande: gcc -v empty.c. Coller le résultat dans votre question. Inclus dans le spew seront les répertoires dans lesquels le compilateur recherche pour inclure le fichier dans. En supposant que vous avez installé le nuwen distro en c:\mingw, scoped_ptr.hpp doit être en `c:\mingw\include\boost`
  • J'ai téléchargé et exécuté, mais le résultat est vraiment très complexe. J'ai réussi à trouver la marque d'invocation, mais il ya tellement de nombreux cas de programmes la chaîne de compilation, je ne sais pas où chercher.
  • Si vous avez filtré par le nom du fichier à inclure, vous devriez voir juste le temps lorsque le programme tente d'ouvrir ce fichier, qui devraient montrer l'annuaire ou de répertoires, il est à la recherche pour elle. (Évidemment, Michael solution est préférable dans cette situation!)

InformationsquelleAutor tjtoml | 2014-03-07