Допустим, у нас есть приложение, которому понадобится Boost для компиляции. Мы являемся внешней библиотекой, которая регулярно обновляется, и наше приложение имеет несколько двоичных файлов и несколько версий ( «несколько», как в «Пусть они растут и размножаются» ... не спрашивайте ... ), мы нужна простая для обновления / поддержки косвенная ссылка для каждой версии приложения с соответствующей версией Boost.
Например:
- MyApp 8.0 => Повышение 1.34
- MyApp 8.1 => Повышение 1.35
- MyApp 9.0 => Повышение 1.35
- MyApp 10.0 => Повышение 1.37
В файловой системе Linux мы создали бы символическую ссылку, перенаправляющую в правый каталог boost:
- MyApp 8.0 => MyAppBoostLink_8.0 => Повышение 1.34
- MyApp 8.1 => MyAppBoostLink_8.1 => Boost 1.35
- MyApp 9.0 => MyAppBoostLink_9.0 => Boost 1.35
- MyApp 10.0 => MyAppBoostLink_10.0 => Boost 1.37
Это позволило бы нам легко обновить MyApp 10.0 до ссылки с Boost 1.38, когда она будет доступна, просто заменив символическую ссылку.
Но в Windows это не работает (или я что-то пропустил).
Похоже, что сам Boost отказывается от идеи: с BJam я вспоминаю предупреждения о том, что BJam копирует файлы lib, потому что символические ссылки не работают на WinNT. Я попробовал альтернативу, так как мы используем Visual C ++, но никакая прагма не решает эту проблему (я искал прагму, добавляя каталоги поиска по умолчанию для заголовочных включений и ссылок на библиотеки, но не нашел ни одного).
Не могу поверить, что мне нужно запустить скрипт для извлечения файлов VCPROJ (XML-файлы сборки Visual C ++), для обновления включений Boost, а затем для проверки изменений, но я не вижу другого решения пока в Windows не появятся рабочие символические ссылки (или пока я не найду, как их создавать).
Есть идея получше?
Редактировать
Проблема исчезла, когда мы обновили наш компилятор с Visual C ++ 2003 до Visual C ++ 2008. Очевидно, Visual C ++ 2008 видит символические ссылки в сетях.