首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用boost -把它放在源代码管理或让任何开发人员自己安装?

使用boost -把它放在源代码管理或让任何开发人员自己安装?
EN

Stack Overflow用户
提问于 2011-03-27 18:39:05
回答 3查看 1.2K关注 0票数 14

目前,我们在第三方目录下的SVN中使用Boost。问题是更新整棵树需要花费很多时间,我把Boost的海量文件(以及其他罪魁祸首之一)归咎于此。

或者,我可以让任何开发人员自己安装它,但是我必须强迫它们安装到相同的位置(这很难看.)。

什么是首选?如何处理安装位置问题?

还有其他选择吗?

我在Windows下使用VS2008 (很快的VS2010) (而不是VS2008在.))。

编辑:我们迁移到VS2010并使用属性表。见下面的答案。

罗尔夫有一个伟大和非常详细的方法来使用批处理文件。

其他方法仍然受到欢迎..。:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-25 23:02:18

我接受了拉尔夫的提议使用财产表以下是完整的解决方案。请注意,这是VS2010 only

  • vsprops文件驻留在源代码管理的3rd_party_folder\boost上。 在属性表中,定义了两个宏- boost_include_pathboost_lib_path。 这些宏中的每一个都使用$(MSBuildThisFileDirectory)来引用它驻留在本地机器上的路径,并假定boost_1_46boost_1_46\stage\lib位于该(3rd_party_folder\boos)目录下。最后,Additional Include directoriesAdditional Library directories分别使用这些宏。
  • boost位于组织内部的一个净份额上,3rd_party_folder\boost上有一个简单的xCopy批处理文件,它将boost复制到那里(以获得本地副本)。
  • 我已经将属性表应用于每个需要boost的项目。注意,如果在Microsoft.Cpp.Win32.user属性表之前对其进行评估(可以在其他属性表之间向上或向下移动),则每个用户都可以在本地覆盖值。

优势:

  • 所有需要提升的项目的单点定义。升级助推将更快下一次。此外,它很容易添加boost范围的定义(例如,BOOST_FILESYSTEM_VERSION=2使我免于在所有项目中手动定义)。
  • 每个用户都可以通过在boost_include_pathboost_lib_path上重新定义Microsoft.Cpp.Win32.user,甚至通过显式定义boost来在本地覆盖boost位置。
  • boost不在源代码管理中。这大大提高了我的SVN性能。

缺点:

  • 仍然需要在每台新机器上运行第一次安装程序(简单地增加源代码管理并不需要这样做)。另一方面,它的一次批量得到推动。

干杯

票数 0
EN

Stack Overflow用户

发布于 2011-03-27 18:48:37

由于您的应用程序依赖于boost,所以我认为有一个专门用于存储它的内部SVN项目是值得的。这保证了每个人都会使用相同版本的库,并防止事故发生。

如果您在项目中添加一个安装文件/脚本,并在系统上添加用于构建和安装boost的命令,您将解决这个问题,其他开发人员会很高兴,因为他们只需要运行一个脚本就可以在他们的系统上正确安装所有东西。

票数 8
EN

Stack Overflow用户

发布于 2011-03-27 19:47:44

我们使用声明环境变量的批处理文件使用/UseEnv选项启动Visual。

代码语言:javascript
复制
@set BOOST_BIN=C:\Boost\lib
@echo -- BOOST_BIN set to %BOOST_BIN%
@set BOOST_INCLUDE=C:\Boost\include\boost-1_44
@echo -- BOOST_INCLUDE set to %BOOST_INCLUDE%

然后就像这样

代码语言:javascript
复制
@set INCLUDE=%DSHOWBASECLASSES%;%INCLUDE%
@set INCLUDE=%XERCESROOT%\src;%INCLUDE%
@set INCLUDE=%XALANROOT%\src;%INCLUDE%
@set INCLUDE=%BOOST_INCLUDE%;%INCLUDE%

当然,库路径也是类似的。这些批处理文件被签入SVN,一旦开发人员签出源,他/她必须在第一次更新路径以反映特定机器上的环境,然后一切都设置好了。

这适用于VS2003,3005,2008,2010。在我们的批处理文件中,我们还声明了各种路径,如VS头路径、lib路径、SDK路径,并且一旦VS启动,环境将全部设置。

在VS2010中,您可以使用属性表机制来定义自定义环境变量,如果所有开发人员都在使用VS2010,这会使我们的方法过度使用,但是在切换不同的IDE版本和不同的机器时非常方便,特别是在您这样的场景中,在不同的机器上使用不同的boost版本,或者boost安装在不同的目录中等等。

编辑:,我更喜欢批处理文件方法,因为就像您说的那样,它适用于VS的所有版本。我每个解决方案都有一个批处理文件,它调用两个其他批处理文件,一个包含特定于用户的信息,如VS版本、SDK、boost dirs等,另一个包含常见路径,如VS目录和我们的软件特定路径。就像你说的,VS 2010解决了这个“基本”问题,而不是以前的版本。对于我们来说,现在很容易在不同的机器上工作,而不考虑boost、VS或MS版本,只需编辑批处理文件。

VsVersion.bat

代码语言:javascript
复制
REM Set this to VC8 or VC9 depending on which VS version you want to use
@set VS_VERSION=VC10

IF %VS_VERSION% EQU VC7 GOTO SETUP_VC7_ENV
IF %VS_VERSION% EQU VC8 GOTO SETUP_VC8_ENV
IF %VS_VERSION% EQU VC9 GOTO SETUP_VC9_ENV
IF %VS_VERSION% EQU VC10 GOTO SETUP_VC10_ENV

:SETUP_VC7_ENV
@set VisualStudioRoot=C:\Program Files\Microsoft Visual Studio .NET 2003
@set VisualStudio=%VisualStudioRoot%\Common7\IDE\devenv.exe
@set VisualCDir=VC7
@GOTO END

:SETUP_VC8_ENV
@set VisualStudioRoot=C:\Program Files (x86)\Microsoft Visual Studio 8
@set VisualStudio=%VisualStudioRoot%\Common7\IDE\devenv.exe
@set VisualCDir=VC
@GOTO END

:SETUP_VC9_ENV
@set VisualStudioRoot=C:\Program Files (x86)\Microsoft Visual Studio 9.0
@set VisualStudio=%VisualStudioRoot%\Common7\IDE\devenv.exe
@set VisualCDir=VC
@GOTO END

:SETUP_VC10_ENV
@set VisualStudioRoot=C:\Program Files (x86)\Microsoft Visual Studio 10.0
@set VisualStudio=%VisualStudioRoot%\Common7\IDE\devenv.exe
@set VisualCDir=VC
@GOTO END

:END
@echo -- VisualStudioRoot set to %VisualStudioRoot%
@echo -- VisualStudio set to %VisualStudio%
@echo -- VS_SOL_EXT set to %VS_SOL_EXT%

第二个批处理文件包含如上所述的用户特定路径。这两个批处理文件是每个用户将根据其环境编辑的文件。第三个批处理文件调用这些文件。这个包含标准路径,最后这个路径由每个解决方案的另一个批处理文件调用。

代码语言:javascript
复制
@call master.bat

@set MediaPipeLineDir=%RTVCRootDir%\MediaPipeLine
@echo -- MediaPipeLineDir set to %MediaPipeLineDir%
@set INCLUDE=%MediaPipeLineDir%;%INCLUDE%

@set SolutionFile=%SolutionDir%\MediaPipeLine/Transcoder.sln
@echo -- SolutionFile set to %SolutionFile%

@rem 
@rem Start development tools
@rem Arguments:
@rem %1 = vs (visual studio)
@rem %2 = cmd (commandline)

@echo -- Exec Visual Studio
@call "%VisualStudio%" /UseEnv %SolutionFile%

@echo -- Exec CMD
@call "%SystemRoot%\system32\cmd.exe"

@:END

虽然设置确实很麻烦,但一旦编写完毕,它就可以正常工作了。另一个缺点是VS需要通过批处理文件启动。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5451413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档