Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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 ?

А вообще, странно, что в проекте нельзя указывать относительные пути...

Автор: Daevaorn 12.12.2006, 23:39
Цитата(CyraxZ @  13.12.2006,  00:32 Найти цитируемый пост)
А вообще, странно, что в проекте нельзя указывать относительные пути... 

Все вопросы к Borland.
Как уже сказал Любитель, при использовании грамотной билд-системы проблем с переходом на другой компилятор и даже платформу - не будет. конечно при правильном(портабельном) коде.

Автор: CyraxZ 13.12.2006, 00:03
Daevaorn
Ну, а какие "билд-системы" грамотные ?
(например, из BCB, MSVC, Eclipse)

Автор: Daevaorn 13.12.2006, 00:08
Цитата(CyraxZ @  13.12.2006,  01:03 Найти цитируемый пост)
(например, из BCB, MSVC, Eclipse) 

Никакие

Мой фаворит: 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. Да - при правильных настройках (путей и пр.)

ЗЫ Сие уже впрочем отдельная тема пошла.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)