【问题标题】:Is there a pragma directive for include directories?是否有包含目录的编译指示指令?
【发布时间】:2011-08-15 19:08:25
【问题描述】:

正如标题所说:是否有使用 VS20** C++ 的包含目录的编译指示指令?我想到了类似的东西:

#pragma comment(include, "..\externals\blah\includes\")

这样我可以在这个样式中使用includes,而blah.h里面也可以使用这个样式?

#include <blah.h>

我知道我可以在我的项目设置中设置包含目录,但我要求一个预处理器指令,因为否则我必须为每个编译器配置文件设置它。

问候尼姆

【问题讨论】:

  • 您知道您可以多选配置文件然后设置包含文件夹吗?
  • 是的,但至少通过添加一个配置文件我必须重新设置它。

标签: c++ visual-studio include pragma


【解决方案1】:

您可以创建一个 txt 文件(例如 IncludeDirs.txt)。在该文件中,您可以添加包含文件夹:

/I "."
/I ".."
/I ".\OtherFolder"

然后在属性->配置属性->C/C++->命令行 添加以下字符串:

@includedirs.txt

您可以为每个配置文件(调试、发布等)创建不同的文件

【讨论】:

  • 很好 - 唯一的缺点是它被埋在“非标准”位置的项目设置中,但如果只需要完成一次,它可能会让事情变得更容易..跨度>
【解决方案2】:

我认为没有任何方法可以做到这一点。 include_alias 仅在逐个文件的基础上有用。

【讨论】:

  • 是的,但是这样我也可以修改每个外部项目的头文件。
【解决方案3】:

我不知道。

不久前,我通过在每个目录中创建“all”和“all.cpp”文件以将每个头文件和源文件包含在其中来解决了这个问题。它需要一些手动工作来创建和维护,但我相信这是值得的。这样我就可以写#include &lt;Frigo/Math/all&gt;之类的东西。甚至可以创建一个自动更新它们的脚本。

【讨论】:

    【解决方案4】:

    您可以在项目属性中添加一个“主文件夹”,然后将正确的文件夹放入包含指令中,例如:

    文件夹 "includes" 和子文件夹 "Unicode"/"ASCII",两者都有一个名为 "String.h" 的头文件(你不应该使用同名)

    在代码使用中:

    #ifdef UNICODE // or your preprocessor flag
    #  include <Unicode/string.h>
    #else 
    #  include <ASCII/string.h>
    #endif
    

    你也可以使用DEBUG或者任何关键字,只要你在Project-Settings --&gt; C/C++ --&gt; Preprocessor --&gt; Preprocessor defintions中指定即可

    【讨论】:

    • 抱歉,我知道。我不确定您是否正确理解了我的问题。如果你读过我的帖子,你就会知道这不是我的问题的本意。
    【解决方案5】:

    您可以创建一个 .props 文件,其中包含选择的项目属性。

    <?xml version="1.0" encoding="utf-8"?>
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <ImportGroup Label="PropertySheets" />
        <PropertyGroup>
            <IncludePath>C:\ExampleDir\Include;$(IncludePath)</IncludePath>
        </PropertyGroup>
    </Project>
    

    您可以从 .vcxproj 文件中移动属性块。
    它还可能包含属性的每个配置条件(这也是您可以从 .vcxproj 文件内部了解的内容)。

    重要: .props 文件需要从属性管理器选项卡中引用

    [查看] - [属性管理器] 菜单 - 选择 [添加现有属性表...]

    同时关注特定构建配置。

    【讨论】:

      猜你喜欢
      • 2010-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2011-01-03
      • 2012-10-10
      • 2017-02-07
      • 2013-06-30
      相关资源
      最近更新 更多