CMake(cotire)预编译头文件并禁用警告

Dej*_*jwi 6 gcc warnings cmake precompiled-headers suppress-warnings

我正在为CMake 使用cotire(https://github.com/sakra/cotire)插件,它处理与编译加速有关的几个好东西(例如预编译头文件).

问题是我包含了几个标题(Boost related或Protobuf)作为系统标题 - 其中警告被禁用.在他们被预编译后,我收到了很多警告.

我可以在预编译的头文件中禁用警告吗?

Ada*_*wen 1

我不认为有内置的方法可以做到这一点,我们修改了 cotire 函数 cotire_add_pch_compilation_flags (1244 cotire.cmake 版本 1.5.1 版)以在编译预编译头时添加“-w”标志。我们将 GNU|CLang 部分更改为

elseif (_compilerID MATCHES "GNU|Clang")
        # GCC / Clang options used
        # -x specify the source language
        # -c compile but do not link
        # -o place output in file
        set (_xLanguage_C "c-header")
        set (_xLanguage_CXX "c++-header")
        if (_flags)
            # append to list
            list (APPEND _flags "-x" "${_xLanguage_${_language}}" "-w" "-c" "${_prefixFile}" -o "${_pchFile}")
        else()
            # return as a flag string
            set (_flags "-x ${_xLanguage_${_language}} -w -c \"${_prefixFile}\" -o \"${_pchFile}\"")
        endif()
Run Code Online (Sandbox Code Playgroud)

这会抑制我们的所有警告,我们打开了很多警告 - 包括 -Werror,所以这是一个重要的更改!