编译教程(0) - 使用Visual Studio的Property Manager简化项目库配置

利用 Visual Studio 的 Property Manager(属性管理器) 和 .props 属性表 来简化项目库配置,是管理 C++ 项目(特别是中大型解决方案)依赖和编译设置的最佳实践。它能将通用的配置(如第三方库的路径、预处理器定义、编译器选项等)集中管理,避免在每个项目中重复设置,极大提高了可维护性。

Step1.新建一个属性表(.props 文件)

打开属性管理器
属性管理器的位置
会得到如下窗口
Property Manager的具体内容
添加和导入具体配置表
新建配置表
在C++外部库的配置中,一般仅需配置VC++ Directories(VC++目录)和Linker->Input(链接器->输入)

  • 具体如下
    VC++目录
  • Include Directories(包含目录): 添加库的头文件路径
  • Library Directories(库目录): 添加库文件路径
    命令行参数Linker->Input
  • 在外部库的使用配置过程中基本上需要配置的就是这两个地方,在我们后续的库编译配置过程中也会有所体现
  • 最后,我们来看看如何导入配置表(库配置复用)

Step2.导入已有属性表(.props 文件)

导入属性表
选择配置表
导入配置表成功

Step3.在团队和持续集成中共享

  1. 将属性表加入版本控制:将你的 .props 文件(以及团队约定的统一库目录结构说明)提交到 Git 等版本控制系统。
  2. 统一库路径
    • 要求团队所有成员将第三方库安装或解压到统一的绝对路径下(例如都放在 D:\Libraries)。
    • 这样,属性表中配置的绝对路径(如 D:\Libraries\OpenCV\4.7.0\include)对所有人的机器都有效。
  3. 替代方案:使用环境变量或用户宏(更灵活):
    • 你可以创建一个“基础”属性表,其中使用 用户宏(User Macros) 来定义根路径。
    • 例如,创建一个 MY_LIBRARY_ROOT 宏,值为 D:\Libraries
    • 然后在配置路径时使用 $(MY_LIBRARY_ROOT)\OpenCV\4.7.0\include
    • 这样,如果团队成员的库路径不同(例如有人放在 C:\Dev\Libs),他们只需要在自己的 Visual Studio 中修改 MY_LIBRARY_ROOT 这个用户宏的值即可,无需修改属性表文件本身,避免了与版本控制系统的冲突。

优点总结

  • 一改全改:修改一个 .props 文件,所有引用了它的项目都会自动更新。
  • 配置解耦:项目文件(.vcxproj)不再包含硬编码的绝对路径,变得非常干净,易于跨机器构建和进行持续集成(CI)。
  • 模块化:可以为不同的库(如 MathLibs.props, GraphicsLibs.props)或不同的用途创建不同的属性表,按需组合。
  • 减少错误:避免了在每个新项目中手动配置可能带来的错误和遗漏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值