将特定于C的gcc选项应用于C/C++;混合图书馆 我有一个带有C++包装的库,它是用CMake和GCC构建的自动生成的C代码。当我编译它时,我得到了这些我想要禁止的警告: src/ssp/autogenerated.c: In function ‘x1111’: src/ssp/autogenerated.c:185:1: warning: implicit declaration of function ‘x1111’; did you mean ‘x1110’? [-Wimplicit-function-declaration] 185 | x1111(); | ^~~~~~~~~~
我应该能够使用将特定于C的gcc选项应用于C/C++;混合图书馆 我有一个带有C++包装的库,它是用CMake和GCC构建的自动生成的C代码。当我编译它时,我得到了这些我想要禁止的警告: src/ssp/autogenerated.c: In function ‘x1111’: src/ssp/autogenerated.c:185:1: warning: implicit declaration of function ‘x1111’; did you mean ‘x1110’? [-Wimplicit-function-declaration] 185 | x1111(); | ^~~~~~~~~~,gcc,cmake,g++,Gcc,Cmake,G++,我应该能够使用-Wno隐式函数声明抑制这些警告。我将其添加到我的CMakeLists.txt中,如下所示: file(GLOB SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/ssp/*.c src/ssp/*.cpp) add_library(mylib SHARED ${SRCS}) target_compile_options(mylib PRIVATE "-Wno-implicit-function-declaration"
-Wno隐式函数声明抑制这些警告。我将其添加到我的CMakeLists.txt中,如下所示:
file(GLOB SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} src/ssp/*.c src/ssp/*.cpp)
add_library(mylib SHARED ${SRCS})
target_compile_options(mylib PRIVATE "-Wno-implicit-function-declaration")
但是,其中仍然有一个*.cpp
源代码,因此编译给了我:
cc1plus: error: command-line option ‘-Wno-implicit-function-declaration’ is valid for C/ObjC but not for C++ [-Werror]
cc1plus: all warnings being treated as errors
有没有办法阻止这些警告?我想可能只对C源应用-Wno隐式函数声明
,或者被g++
忽略?只对C源应用该选项。看
target\u compile\u选项(mylib专用
$
)
仅对C源应用该选项。看
target\u compile\u选项(mylib专用
$
)
是的,这很有效!我不得不将$
更改为$
,但这正是我所需要的。是的,这很有效!我不得不将$
更改为$
,但这正是我所需要的。
target_compile_options(mylib PRIVATE
$<$<COMPILE_LANGUAGE:C>:-Wno-implicit-function-declaration>
)