Компиляция C ++ с помощью cygwin не выполняет поиск при условии включения путей - PullRequest
0 голосов
/ 22 сентября 2011

Я работаю в дереве, которое прекрасно компилируется на любой Unix-машине, на которую я его добавляю, но с Cygwin сложно, и я не совсем уверен, с чего начать.У меня есть следующая структура каталогов:

buildwin/
|-- main.cpp
|-- other project files
|-- include/
    |-- tclap
        |-- CmdLine.h
        |-- other files (including CmdLine.cpp)
    |-- eigen
        |-- (appropriate files)
    |-- rapidxml
        |-- (appropriate files)

Когда я пытаюсь скомпилировать это, я получаю следующую ошибку от g ++:

$ g++ main.cpp -lglut32 -lglu32 -lopengl32 -Iinclude/eigen -Iinclude/rapidxml -Iinclude/tclap
main.cpp:6:27: fatal error: tclap/CmdLine.h: No such file or directory
compilation terminated.

Я знаю, что он находит другие библиотеки (eigen и rapidxml) хорошо, потому что если я уберу соответствующие флаги включения, он выдаст ошибку, сообщающую, что он не может найти eigen или что у вас.

Указанное включение включает в себя:

// snip
#include <Eigen/StdVector>
#include <cmath>
#include <iostream>
#include <fstream>

#include <tclap/CmdLine.h>
// snip

Идеи?Спасибо!

Ответы [ 2 ]

1 голос
/ 22 сентября 2011

Работает ли -Iinclude?Возможно, вам не нужно явно добавлять подкаталоги include, потому что вы ссылаетесь на них в именах операторов #include.

1 голос
/ 22 сентября 2011

Вы указываете -Iinclude/tclap, затем включаете tclap/CmdLine.h, поэтому компилятор отправляется на поиски include/tclap/tclap/CmdLine.h.

Либо используйте -Iinclude, либо включите CmdLine.h без пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...