CMake:为我的项目设置警告标志,但不包括 headers
CMake: set warning flags for my project, but not included headers
我正在构建一个包含 llvm 的项目。
我想为我的代码启用警告,但忽略来自 llvm headers.
代码的警告
我有一个源文件:
// 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 headers 的警告?
您需要在 CMake 文件中正确配置 include 目录。这样的事情应该可以解决问题:
target_include_directories(prog <your project-specific include dirs>)
target_include_directories(prog SYSTEM ${LLVM_INCLUDE_DIRS})
这样编译器会将 LLVM headers 视为“third-party”并且不会为它们发出任何警告。
我正在构建一个包含 llvm 的项目。 我想为我的代码启用警告,但忽略来自 llvm headers.
代码的警告我有一个源文件:
// 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 headers 的警告?
您需要在 CMake 文件中正确配置 include 目录。这样的事情应该可以解决问题:
target_include_directories(prog <your project-specific include dirs>)
target_include_directories(prog SYSTEM ${LLVM_INCLUDE_DIRS})
这样编译器会将 LLVM headers 视为“third-party”并且不会为它们发出任何警告。