2013-06-14 3 views
0

Я раньше не использовал Boost и хочу изменить это сейчас. Но мне нужна только одна из его библиотек, которая является Boost.Filesystem. Я успешно построил библиотеки и связал одну из папки boost/libs/filesystem с моим проектом Visual Studio.Как использовать Boost.Filesystem автономно?

Затем я скопировал boost/filesystem.cpp и папку boost/filesystem с ее содержимым в каталог include моего проекта. Но этого было недостаточно, поскольку компилятор жаловался на многие файлы, связанные с ускорением, которые отсутствовали.

Вот несколько примеров, но их гораздо больше.

boost/utility/enable_if.hpp 
boost/type_traits/is_integral.hpp 
boost/type_traits/is_array.hpp 
boost/type_traits/decay.hpp 
boost/system/system_error.hpp 
... 

Как использовать Boost.Filesystem как отдельную библиотеку? Я не хочу использовать всю коллекцию, так как я хочу хранить библиотеки в каталоге проекта, и поэтому она излишне увеличивала бы размер моего проекта.

+0

Если вы используете VS2012 включает (как еще нестандартность) '' заголовка; он основан на Boost.FileSystem V3. В противном случае AFAIK не будет доступна отдельная версия. Кроме того, IMO, ваша установка Boost должна управляться отдельно от любого из ваших проектов, потому что вы, вероятно, захотите использовать Boost с более чем одним из ваших личных проектов. – Praetorian

+0

Я знаю, что рекомендуется устанавливать Boost отдельно, но у меня все хорошо, включая все библиотеки в мой проект. Это облегчает проверку проекта на другом компьютере и продолжает работу. Я раньше не слышал о '', но это звучит здорово. Предоставляет ли он способ получить последнюю измененную дату файла? – danijar

+0

Реализация основана на [предложении] (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3505.html) для C++ 14, и она сильно зависит от Boost.Filesystem. Но поскольку он не стандартизирован, ваш код может порвать с будущими версиями. Что касается конкретных особенностей, я никогда не использовал его сам, поэтому я не знаю ответа на этот вопрос. Но если версия Boost поддерживает ее, скорее всего, это и делает другой. – Praetorian

ответ

1

Как правило, когда вы используете библиотеку, вы не копируете ее в свой проект. Вместо этого вы сообщаете компилятору, где он может найти его. В Linux это очень просто, поскольку есть общее место для размещения заголовков, общего места для размещения файлов библиотек и т. Д. В Windows вы обычно делаете это, добавляя местоположения к путям include и library самостоятельно, например.

Visual Studio screenshot

+0

Итак, Linux лучше, потому что стандартная установка создает больше каталогов? Ничто не мешает вам создавать эти каталоги самостоятельно в Windows. Я совершенно доволен ОС, не загромождая мой диск каталогами, которые могут мне понадобиться, или навязывая мне свою систему организации. –

+0

@CodyGray Это обсуждение не в тему. Он просто сказал, что в Linux это проще, так как есть менеджеры пакетов, позволяющие вводить короткую команду для загрузки пакетов и установки их в каталог по умолчанию. – danijar

Смежные вопросы