我正在构建一个包含 llvm 的项目。 我想为我的代码启用警告,但忽略 llvm header 中代码的警告。
我有一个源文件,例如:
// 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 header 的警告?
最佳答案
您需要在 CMake 文件中正确配置包含目录。像这样的事情应该可以解决问题:
target_include_directories(prog <your project-specific include dirs>)
target_include_directories(prog SYSTEM ${LLVM_INCLUDE_DIRS})
这样编译器会将 LLVM header 视为“第三方”,并且不会发出任何警告。
关于c++ - CMake:为我的项目设置警告标志,但不包含 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66072350/