c++ - 共享需要外部库的 Visual Studio 项目
问题描述
我不是专业开发 C++ 或专业使用 Visual Studio 的开发人员。希望这个问题不是太琐碎。
包含外部库的标准方法是将它们链接到您的项目设置中。但是,假设我想与几个同事或朋友分享这个项目。显然他们也需要这些必需的库。
在 CMake 中,有一些模块可以以与路径无关的方式检测和加载系统上可用的库。换句话说,借助 cmake 查找库,它会自动将标题和其他所需内容的正确路径放入已配置的解决方案中。
CMake 中的某些事情变得更加复杂并减慢了开发速度——例如包含和管理资源文件。因此,我想放弃标准 MSBuild Visual Studio 的 CMake。我唯一的挂断是如何创建我的解决方案文件,以便下一个编译我的代码的人不需要库与我位于完全相同的位置?他们是否必须在加载解决方案时自己配置解决方案?这里的标准做法是什么。
谢谢!
解决方案
我们对 props 文件使用 MSBuild 支持。
props 文件(例如 envdeppaths.x64.user.props 包含库路径):
<Project DefaultTargets="Build" ...>
<PropertyGroup Label="EnvDependentPaths">
<!-- base directory of boost to be used -->
<BoostDir>c:\dev\libs\boost</BoostDir>
...
这些文件包含库路径(在某些情况下,头文件和二进制文件是分开的)、所需的预处理器定义等。
它们被导入到项目文件中,类似于:
<Project DefaultTargets="Build" ...
<ItemGroup Label="ProjectConfigurations">
<ImportGroup Label="EnvDependentPaths">
<Import Project="$(SolutionDir)\envdeppaths.$(Platform).user.props"
Condition="exists('$(SolutionDir)\envdeppaths.$(Platform).user.props')"
Label="EnvDependentPaths" />
</ImportGroup>
...
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<AdditionalIncludeDirectories>$(BoostDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
...
但是,这种方法有一些缺点:
- 需要手动编辑项目文件
- props 文件不能简单地检入 VCS,因此干净检出需要手动放置 props 文件
当然还有其他方法。Visual Studio 在配置管理器中包含构建属性的编辑器,无需手动编辑。
推荐阅读
- php - 在数组上映射字符串
- php - Wordpress - 从 url 为内存中的所有页面保留一个变量
- javascript - 如何检查一个项目是否已经存在于数组中
- python - TypeError:pushDefaultLayers() 采用 1 个位置参数,但给出了 2 个
- python - 如何创建无限组的维恩图?
- python-3.x - 如何从不同的路径在 Jupyter 笔记本中打开 .csv 文件
- php - 如何使用 symfony5 通过 url 发送上传的文档
- haskell - 为什么字节串的 Data.Binary 实例将字节串的长度添加为前缀
- android - 如何在谷歌播放控制台中恢复到旧版本
- android - TYPO3 - 添加到主屏幕图标