В моем make-файле этого проекта я указываю 3 места для компилятора, чтобы найти #includes.
INCLUDES=-I. -I/home/kelly/xerces/xerces-c-3.1.1/src -I/home/kelly/Utilities_New
Когда я компилирую следующий пример кода с командной строкой, найденной в комментарии:
#include <iostream>
#include <string>
#include <sstream>
#include <iomanip>
#include <xercesc/util/XMLString.hpp>
using namespace std;
/*
g++ -I. -I/home/kelly/xerces/xerces-c-3.1.1/src -I/home/kelly/Utilities_New test.cpp
*/
int main(int argc, char* argv[])
{
cout << "this works" << endl;
}
In file included from /home/kelly/Utilities_New/string.h:5:0,
from /home/kelly/xerces/xerces-c-3.1.1/src/xercesc/framework/XMLBuffer.hpp:28,
from /home/kelly/xerces/xerces-c-3.1.1/src/xercesc/util/XMLString.hpp:26,
from test.cpp:7:
/home/kelly/Utilities_New/defs.h:26:21: fatal error: windows.h: No such file or directory
compilation terminated.
Ясно, что компилятор решил, что когда он обрабатывает Xerces #includes и находит string.h в каталоге Utilities_New, он нашел то, что ему нужно, и останавливается на этом.
Этот другой string.h был написан другим программистом, и я пытаюсь использовать его библиотеку.
Я думал, что сначала искали стандартные локации. Я немного потерялся здесь. Я могу упустить что-то супер очевидное для всех вас.
Кроме того, не существовало ли какое-то правило относительно файлов #include, которые имели ‹> против "" вокруг них и где должен был искать компилятор?