如何在外部库中隐藏编译中的警告

时间:2017-02-21 18:00:58

标签: c++ c++11 makefile compilation

我有一个只有这段代码的main.cpp文件:

#include <iostream>
#include "include/rapi/RApi.h"

using namespace std;

int main() {
    std::cout << "Test\n";
    return 0;
}

当我编译时,我希望看到来自我的代码的警告,但不是来自外部包含的文件。我以前能够实现这一点,但是我可能在编译标志中遗漏了一些东西,因为当我不想看到它们时,我一直在从包含的头文件中查找错误。

这是我的编译命令:

g++ -isystem include -pedantic -Wall -Wextra main.cpp -o main.o

我希望看到来自main.cpp的警告和错误,但不是来自include文件夹中的文件。

我已尝试-isysteminclude -isysteminclude/rapi,将-isystem传递到旗帜的末尾,但无济于事。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:4)

您需要将-isystem include添加到编译行,然后在代码中使用:

#include "rapi/RApi.h"

(不是include/rapi/RApi.h)。 -isystem选项仅应用&#34;系统标题&#34;属性到使用该搜索路径查找的文件。如果您将完整路径放在#include中,那么GCC会直接查找路径并且不使用-isystem路径,因此&#34;系统标头&#34;属性未应用。

关于使用<> vs "",行为的确切差异基本上是实现定义的。没有必要猜测,只需查看各种SO问题和答案,例如this one

答案 1 :(得分:2)

placeholder= '"' + {this.props.edit_tag_reducer.time_in} + '"'