Включить косвенное обращение в Visual C ++ - PullRequest
1 голос
/ 26 января 2009

Допустим, у нас есть приложение, которому понадобится 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 видит символические ссылки в сетях.

Ответы [ 2 ]

3 голосов
/ 26 января 2009

Эквивалент символических ссылок Windows в файловых системах NTFS называется переходами: http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

2 голосов
/ 26 января 2009

Вы можете хранить базовый каталог установки Boost в переменной среды, зависящей от версии, которая устанавливается в «стартовом пакетном файле» для VS2008. Это, вероятно, не так страшно, как манипулирование файлами .vcproj как часть процесса сборки. Возможно ...

...