Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将特定于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++ - Fatal编程技术网

将特定于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>
)