| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Прописка стандартных путей с помощью директив |
| Автор: CyraxZ 11.12.2006, 14:16 |
| Работаю с XML-парсером xerces. Во всех его исходниках (их целая куча) модули подключаются как стандартные (с угловыми скобками), например, <xercesc/dom/DOMAttr.hpp>. Все include'ы начинаются с каталога xerces, т.е. он должен распознаваться как стандартный. Пишу в C++Builder'е независимый переносимый модуль на C++ и STL. Поэтому, стандартные пути необходимо прописать в коде с помощью стандартных C++-ных директив (не в свойствах проекта IDE C++Builder). Как это сделать ? |
| Автор: JackYF 11.12.2006, 17:07 |
| Да так и сделать: #include <xercesc/dom/DOMAttr.hpp> Только в настройках каждого отдельного компилятора нужно будет указывать путь к xercesc. А код останется переносимым. Или я чего-то недопонял? |
| Автор: Любитель 12.12.2006, 17:43 |
| В коде на плюсах сие не делается. По хорошему, это прописывается в твоей билд-системе (мейкфайлы, jam-файлы, pro-файлы и т. д.). |
| Автор: CyraxZ 12.12.2006, 19:27 |
| У меня тут возник смежный вопрос. С++Builder прописывает в файле проекта среди остальных путей и путь к текущему каталогу. Этот путь вместе с остальными через параметры передаётся компилятору (при интерпретации файла проекта). Но будет ли компилятор искать по умолчанию хидер в текущем каталоге, если среди передаваемых ему через параметры стандартных путей путь к текущему каталогу будет отсутствовать ? (вопрос относится вообще к любым компиляторам) Любитель, А по плохому ? Т.е. вообще (вопрос, скажем, из интереса) можно ли такое сделать с помощью стандартных C++ - ных директив. Будет только плюс переносимости из одной IDE на другую... |
| Автор: Anikmar 12.12.2006, 20:34 |
| Недавно похожая тема обсуждалась. Как переносить проект между машиной на работе и домашней, если абсолютные пути отличаются, а относительные - одинаковые. Было предложено запихать все пути в переменные окружения, при таком подходе можно таскать спокойно - главное, чтобы переменные были определены корректно... Может и в данном случае такое решение подойдет. |
| Автор: CyraxZ 12.12.2006, 23:32 |
| Anikmar, запихать в переменные окружения Windows ? А вообще, странно, что в проекте нельзя указывать относительные пути... |
| Автор: CyraxZ 13.12.2006, 00:03 |
| Daevaorn Ну, а какие "билд-системы" грамотные ? (например, из BCB, MSVC, Eclipse) |
| Автор: Daevaorn 13.12.2006, 00:08 |
Никакие Мой фаворит: http://www.scons.org/ Ещё: http://www.perforce.com/jam/jam.html http://ant.apache.org/ Классика: http://www.gnu.org/software/make/make.html |
| Автор: Любитель 14.12.2006, 17:39 |
| Eclipse позволяет непосредственно работать с мейками. По идее должна быть также родная поддержка анта для плюсов (всё же это родная билд-система эклипса). CyraxZ, а по плохому пишешь сценарий (хотя бы два штуки: бат и сх), который запустит компилер и прочее. Тебе сие больше нравиться? |
| Автор: CyraxZ 14.12.2006, 20:03 |
| Насчёт прописки относительного пути в C++ Builder (и в других IDE): ./<подкаталоги текущего каталога> и не потребуется трогать переменную PATH... (единственный минус - по умолчанию прописываются абсолютные пути (это касается C++ Builder, насчёт остальных не знаю)) |
| Автор: CyraxZ 14.12.2006, 20:27 |
| По сабжу: 1. Скажем, мне нужно подключать XercesLib.dll неявно. При этом подключать не все, а только те функции, которые используются в программе. Как это сделать ? Судя по всему, нужно либо включить в библиотеку импорта XercesLib.lib только необходимые функции из dll, либо как-то указать линковщику, что линковать нужно только вызываемые в программе функции... 2. Если я соберу объектную библиотеку (.lib) с объектным кодом всех сырцов xerces'а, статически слинкую с основной программой, то будут ли дебажиться cpp-ники сырцов ? (при сборке dll-ки в опциях компилятора указан пункт Debug information) |
| Автор: JackYF 14.12.2006, 20:51 |
| По пункту 2: скорее всего да. |
| Автор: Любитель 15.12.2006, 10:40 |
| 1. Если у тебя есть исходники, то это несложно. 2. Да - при правильных настройках (путей и пр.) ЗЫ Сие уже впрочем отдельная тема пошла. |