c++, y compris eigen dans mon makefile
Ce qui semble être la bonne réponse à mon problème, mais je pense que c'est plus la façon dont je suis en train d'écrire mon makefile que j'ai déjà de la procédure décrite dans le lien ci-dessous (je sais comment construire des choses).
Erreur:
SASAGeometry.h:6:22: error: Eigen/Core: No such file or directory
SASAGeometry.h:7:20: error: Eigen/LU: No such file or directory
La problématique lignes dans mon fichier d'en-tête sont tout simplement :
#include <Eigen/Core>
#include <Eigen/LU>
Donc, voici le makefile (suis sur overkill dans la ligne, je sais):
CC = g++
BIN = .
INCLUDE = -I/usr/local/include/eigen2/ -I. -I/usr/local/include/eigen2/Eigen/ -I/home/mark/Applications/eigen/Eigen/src/ -I /usr/local/include
CFLAGS = -pipe
LFLAGS = -lm
GeomTest_OBJS = geomTest.o SASAGeometry.o
geomTest_source = SASAGeometry.cpp SASAGeometry.h sasa_transformMatrix.cpp sasa_transformMatrix.h geomSetup.cpp
geomTest : $(GeomTest_OBJS) makefile
$(CC) -o geomTest.o -o SASAGeometry.o $(LIBS) $(INCLUDE) $(CFLAGS) $(geomTest_source) $(LFLAGS)
$(CC) $(LIBS) $(INCLUDE) $(CFLAGS) -o $(BIN)/geomTest geomTest.o SASAGeometry.o $(LFLAGS)
clean : \rm *.o *~ p1
toutes les pensées?
Merci d'avance!
Quelle est l'erreur? Aussi, cette partie de l'drapeaux est presque certainement inutile:
Je sais que c'est inutile, je l'ai mis en tant que j'ai pu pointer le compilateur Propres fichiers d'en-tête (et oui, j'ai mis les deux versions de celui-ci sur ma machine. Juste pour cela, et juste au cas où.) Comme pour le CXX choses, certes, je peux appeler mon makefile vars ce que je veux? Mettre les erreurs dans mon post maintenant embarass.
J'ai fait changer le fichier de créer, comme vous l'avez suggéré, cependant, pour plus de clarté.
-I/usr/local/include/eigen2/Eigen/
(probablement aussi celui dont src
). Enfin, la création CC
à g++
est tout simplement ignoble. Utilisation CXX
(et CXXFLAGS
) à la place.Je sais que c'est inutile, je l'ai mis en tant que j'ai pu pointer le compilateur Propres fichiers d'en-tête (et oui, j'ai mis les deux versions de celui-ci sur ma machine. Juste pour cela, et juste au cas où.) Comme pour le CXX choses, certes, je peux appeler mon makefile vars ce que je veux? Mettre les erreurs dans mon post maintenant embarass.
J'ai fait changer le fichier de créer, comme vous l'avez suggéré, cependant, pour plus de clarté.
OriginalL'auteur MarkJL | 2011-10-24
Vous devez vous connecter pour publier un commentaire.
(Note, lire les commentaires pour obtenir de l'essence de la solution finale. Je vais mettre à jour la réponse quand j'ai des précisions à partir de l'affiche originale de la question.)
Parfois, c'est ce qui est évident, facile à manquer. Veuillez vérifier que votre utilisateur a les autorisations de lecture pour tous les fichiers et répertoires dans /usr/local/include/eigen2 et /usr/local/include/eigen2/Eigen. Également double vérifier les fichiers que vous y compris existent réellement dans /usr/local/include/eigen2/Eigen.
Supplémentaires:
On dirait que l'installation a été déployé directement dans /usr/include/eigen2 et NON /usr/include/Eigen comme la documentation suppose. Cela signifie que les fichiers d'en-tête les tutoriels sont dans /usr/include/eigen2. Votre -je besoin de souligner à
/usr/include/
(je pense que c'est par défaut sous GNU GCC). Votre code source est incorrecte, il doit être#include <eigen2/Core>
et#include <eigen2/LU>
. Celui qui a installé eigen sur votre système a changé le nom de la racine du répertoire spécifié dans la documentation.OK, je pense que je connais la question, alors je vais revoir ma réponse.
Merci! C'est un véritable casse-tête pour moi. (Et je suis en train de travailler avec eigen2 j'ai toujours peur.)
SASAGeometry.h:6:23: erreur: eigen2/Noyau: Aucun fichier ou répertoire SASAGeometry.h:7:21: erreur: eigen2/LU: Aucun fichier ou répertoire. Je suis heureux que ce n'est pas juste moi. Merci pour l'aide James!
hahaha les en-têtes ont été dans .../eigen2/Propres/ c'est un gros #include, merci pour le coup de coude m'droit à la réponse ET de me laisser du travail à faire, c'est la meilleure chose! Si je pouvais coup de pouce que vous, je le ferais.
OriginalL'auteur James
La question que vous lier a la réponse correcte. Vous avez juste besoin d'utiliser le bon
-I
drapeau à point pour les modes Propres en-têtes. Vous devriez seulement besoin d'une-I
pour tous les modes Propres en-têtes.Oui, quelque chose comme ça pourrait fonctionner.
OriginalL'auteur codemaker