c++ - 在 Visual C++ 上包含间接寻址

标签 c++ include indirection

假设我们有一个需要 Boost 来编译的应用程序。 Boost 是一个外部库,定期更新,我们的应用程序有多个二进制文件和多个版本(“多个”,如“让它们成长和繁殖”......不要问......),我们需要一种易于更新/维护的间接方式,以便为每个应用程序的版本链接正确的 Boost 版本。

例如:

  • MyApp 8.0 => 提升 1.34
  • MyApp 8.1 => 提升 1.35
  • MyApp 9.0 => 提升 1.35
  • MyApp 10.0 => 提升 1.37

在 Linux 文件系统上,我们将创建一个符号链接(symbolic link),重定向到正确的 boost 目录:

  • MyApp 8.0 => MyAppBoostLink_8.0 => Boost 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 链接,只需替换符号链接(symbolic link)即可。

但是在 Windows 上,这不起作用(或者我错过了一些东西)。

Boost 本身似乎放弃了这个想法:使用 BJam,我记得看到警告说 BJam 正在复制 lib 文件,因为符号链接(symbolic link)在 WinNT 上不起作用。我尝试了另一种方法,因为我们使用的是 Visual C++,但是没有编译指示可以解决这个问题(我搜索了一个编译指示,为 header 包含和库链接添加默认搜索目录,但没有找到)。

我不敢相信我需要启动脚本来 check out VCPROJs 文件(Visual C++ XML 生成文件),更新 Boost 包含,然后检入修改,但我看不到其他解决方案直到 Windows 有可用的符号链接(symbolic link)(或者我发现了如何创建它们)。

有更好的主意吗?

编辑

当我们将编译器从 Visual C++ 2003 更新到 Visual C++ 2008 时,问题就消失了。显然,Visual C++ 2008 可以看到跨网络的符号链接(symbolic link)。

最佳答案

NTFS 文件系统上等效的 Windows 符号链接(symbolic link)称为联结:http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx

关于c++ - 在 Visual C++ 上包含间接寻址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/479668/

相关文章:

c++ - .pro 文件更改后 Qt 不刷新 Makefile

c++ - 捕获不可见线程的未处理异常

Windows 7 -> vs10 -> OpenCV *DesperateForHelp*

php - 2 包含在 javascript .show() 中的 PHP 冲突

c - 我在此代码中收到错误 "invalid indirection"

c++ - 避免未定义的行为 : temporary objects

c++ - 用西里尔文读取文件

c++ - 设置包括 mac os 中 eclipse CDT 中的路径(来自框架的 header )

c++ - 解包 std::reference_wrapper 的成本

string - 如何评估 Access 查询中另一个字段中包含的字段名称?