假设我们有一个需要Boost编译的应用程序。 Boost是一个外部库,定期更新,我们的应用程序有多个二进制文件和多个版本(“multiple”,如“让他们成长和繁殖”......不要问...... ),我们需要一个易于更新/维护的间接,以便为每个应用程序的版本链接提供正确的Boost版本。
例如:
在Linux文件系统上,我们将创建一个重定向到右侧boost目录的符号链接:
这将使我们能够轻松更新MyApp 10.0,以便在它可用时与Boost 1.38链接,只需更换符号链接即可。
但在Windows上,这不起作用(或者我错过了一些东西)。
Boost本身似乎放弃了这个想法:有了BJam,我记得看到警告称BJam正在复制lib文件,因为符号链接在WinNT上不起作用。我尝试了另一种选择,因为我们使用Visual C ++,但没有编译指示解决了这个问题(我搜索了一个pragma添加默认搜索目录的头包含和库链接,但没有找到)。
我无法相信我需要启动一个脚本来检出VCPROJs文件(Visual C ++ XML makefile),更新Boost包含,然后检入修改,但我看不到其他解决方案直到Windows有工作的符号链接(或者我发现如何创建它们)。
有更好的主意吗?
当我们更新编译器时,从Visual C ++ 2003到Visual C ++ 2008,问题就消失了。显然,Visual C ++ 2008看到了跨网络的符号链接。
答案 0 :(得分:3)
在NTFS文件系统上等效的Windows符号链接称为联结:http://technet.microsoft.com/en-us/sysinternals/bb896768.aspx
答案 1 :(得分:2)
您可以将boost安装的基本目录保存在特定于版本的环境变量中,该变量在VS2008的“启动程序批处理文件”中设置。这可能不像在构建过程中操作.vcproj文件那样难看。大概...