c++ - CMake:为我的项目设置警告标志,但不包括标题
问题描述
我正在构建一个包含 llvm 的项目。我想为我的代码启用警告,但忽略来自 llvm 标头中代码的警告。
我有一个源文件,如:
// main.cpp
#include <llvm/IR/Instructions.h>
void foo() {
// blah blah blah
}
和一个 CMake 文件,如:
add_executable(prog main.cpp)
target_link_libraries(prog ${llvm_libs})
target_compile_options(prog PRIVATE "-Weverything")
但是-Weverything
当我只关心在我自己的代码中看到警告时,会在包含的 llvm 文件中产生大量警告。
如何为我的代码启用警告,而不会看到包含的 llvm 标头的警告?
解决方案
您需要在 CMake 文件中正确配置包含目录。这样的事情应该可以解决问题:
target_include_directories(prog <your project-specific include dirs>)
target_include_directories(prog SYSTEM ${LLVM_INCLUDE_DIRS})
这样编译器会将 LLVM 标头视为“第三方”,并且不会为它们发出任何警告。
推荐阅读
- javascript - 如何将数据从我的节点脚本发送到客户端脚本中的函数
- angular - 试图为嵌入目的抓取站点数据而 CORS 会妨碍您吗?
- c# - 并行处理是否有助于在 c# 中更快地执行 async-await 代码?
- react-native - 获取下一页数据时出现平面列表错误
- python - 如何切出某些行和列,然后只取 Dataframe Python 中的剩余数据?
- python - 如何将十六进制字符串转换为列表中的十六进制值块?
- angular - 手动将 Angular 应用部署到 Azure 应用服务
- amazon-web-services - AWS lambda 无法承担由 cloudformation 触发的角色
- mysql - 结合mongodb和mysql数据查看
- excel - 将整行设置为范围变量类型时出现运行时错误 13