Visual Studio添加真正的“全局”默认包含路径

时间:2018-02-01 20:27:18

标签: c++ visual-studio header include-path

是否有一种简单的方法可以将路径全局(即对于计算机上的所有用户)添加到Visual Studio中的包含/库目录集中?

我正在寻找能够安全地为所有项目(过去和将来)添加Visual Studio的包含/库路径。这相当于INCLUDE,LIB和LIBPATH环境变量,它们似乎适用于命令行构建,但由于某些原因在通过Visual Studio构建时完全被忽略。它必须应用于计算机上的所有用户。

NOT 正在寻找的是更改用户特定的MSBuild属性表Microsoft.Cpp.Win32.user.props,因为这只会在特定计算机上添加特定用户的路径。虽然这似乎是完成“全局”设置的推荐方法,但它不能应用于我的用例:

我参与了工程师课程编程的介绍,每年大约有1000名学生。我们有一个计算机实验室供他们进行每周实验室测验,但是每次学生退出时都会有目的地清除任何每用户设置/文档(因此我们不能依赖用户道具)。作为课程的一部分,他们需要使用自定义课程库与硬件单元进行交互(因此需要添加include / lib路径)。手动添加每个项目的路径超出了我们教给学生的路径,并且因为他们将在整个学期内每周创建几个项目,所以会变得乏味。

我们尝试了什么:

  • 将所需的标头/库安装到Windows SDK路径 这绝对不是理想的,并且每当Windows SDK更新到更新版本时就会中断
  • 将所需的标头/库安装到Visual Studio的Auxiliary路径 通过检查默认的VC ++包含目录,似乎VS2017在其标题和库的搜索中包含路径C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\VS。根据{{​​3}},该文件夹应该用于不是编译过程真正的一部分的工具。这就是我们目前所做的,但感觉不对,文件夹位置随着Visual Studio版本的变化而变化,因此将来可能会发生变化(因为这个原因,我们在过去的5年里一直坚持使用VS2012)。每当我们在实验室中更新Visual Studio时,我们还必须重新安装库。

我们可以尝试的内容:

  • 将路径添加到工具集默认属性表 同样,建议在各种论坛中反对使用用户道具(例如docs)。工作表本身警告不要修改它们,担心每次更新工具集时都可以重置它们,如果在升级VS时安装了新的工具集,我们将不得不重新修改该工具集的默认工作表。
  • 使用所需设置创建项目模板 我们可以创建一个模板,供学生在通过“新建项目向导”创建新项目时选择。令人担心的是,如果学生使用错误的模板创建项目(这将不可避免地经常出现这类大小的类),并且在没有适当的环境设置的情况下开始他们的测验任务,那么处理问题的噩梦将是一场噩梦。我们有限的员工。此外,模板是VS版本特定的(并放置在特定于版本的文件夹中),因此每次更改visual studio版本时我们都必须重新安装模板。

整个想法是为了面向未来的工作流程。我们想要做的非常简单:将单个标头和单个库添加到默认搜索路径,它应该适用于计算机上安装的任何版本的Visual Studio。在任何其他系统/ IDE上,这是一项微不足道的任务。命令行MSBuild甚至通过环境变量支持它。但由于某些原因,我们无法找到Visual Studio的简单解决方案。

有没有人有更好的主意?

1 个答案:

答案 0 :(得分:2)

创建一个"全球"属性表,其中包含您需要的所有必要更改,并将其添加到任何和所有新项目中。

对于我的示例,我创建了一个名为core.props的属性表,并将其保存在解决方案目录中(但您可以将其保存在任何位置),在此文件中,我添加了包含和库名称/目录(以及其他设置,例如指定Visual Studio使用实验性C ++语言功能;为输出文件指定精确目录;更改调试设置等),每当我创建需要使用这些设置的项目时,我只需将该属性表附加到项目中即可。

  1. 对于任何项目(或新项目),请从“解决方案资源管理器”面板中打开属性管理器。
  2. 为任何随机项目打开所需的配置文件夹(可能是Debug x64,但这取决于您)和"添加新项目属性表"对于该文件夹
  3. 创建文件后,将其打开
  4. 对每个项目进行任何修改
  5. 保存文件
  6. 对于需要这些属性的每个其他项目,打开相同的文件夹(或任何其他文件,如果这些设置不是特定于配置)和"添加现有属性表"到那个文件夹
  7. 冲洗,重复
  8. 您需要稍微使用确切的设置以确保它按照您期望的方式工作(您是否需要指定库/包含/等的相对路径或绝对路径?) ,但是每次创建新项目时,您只需要设置一个工作表,并将所需的所有设置导入到项目中。如果您以后需要进行更改,您只需修改该文件即可修改所有文件。