gpt4 book ai didi

c++ - 如何将编译器标志仅限制到(我的)本地库?

转载 作者:行者123 更新时间:2023-12-01 14:53:49 31 4
gpt4 key购买 nike

我正在尝试下面的示例:

add_library(
mylib
src/my_code.cpp)

target_include_directories(mylib
PUBLIC include ${catkin_INCLUDE_DIRS} ${thirdPartyLib_INCLUDE_DIRS})

add_dependencies(
mylib
${mylib_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS})


target_link_libraries(mylib
PUBLIC
${thirdPartyLib_LIBRARY} ${catkin_LIBRARIES})

target_compile_options(mylib PRIVATE -Werror -Wall -Wextra)

问题是编译选项也传播到 thirdPartyLib,但是我只需要 mylib即可。

最佳答案

我认为问题出在编译器警告,它是由thirdPartyLib头文件在编译my_code.cpp时生成的。

如果不希望编译器从包含的第三方头文件中生成警告,则可以在gcc / clang中将其作为“系统头”包含(命令行选项-isystem而不是-I)。

要在CMake中做到这一点,请使用SYSTEM中的target_include_directories选项:

target_include_directories(mylib
SYSTEM
PUBLIC ${thirdPartyLib_INCLUDE_DIRS}
)

关于c++ - 如何将编译器标志仅限制到(我的)本地库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59625890/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com