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

6

我正在使用CMake的cotire插件(https://github.com/sakra/cotire),它处理与编译速度提升相关的一些好东西(例如预编译头文件)。

问题是我将几个头文件(涉及Boost或Protobuf)包含在系统头文件中 - 在其中警告被禁用。在它们被预编译后,我收到了很多警告。

我能否在预编译头文件中禁用警告?


1
使用cotire 1.6,预编译头文件中的警告将被抑制。 - sakra
CMake 3.16引入了对预编译头的本地支持。请查看target_precompile_headers。您可能可以摆脱cotire。 - usr1234567
1个回答

1

我认为没有内置的方法来实现这一点,我们修改了cotire函数cotire_add_pch_compilation_flags(在cotire.cmake版本1.5.1的第1244行),以便在编译预编译头时添加“-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()

这使得我们可以抑制所有警告,因为我们开启了很多警告,包括 -Werror,所以这是必要的更改!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接