如何仅将编译器标志限制为(我的)本地库?

问题描述 投票:2回答:1

我正在尝试以下示例:

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中需要它们。

c++ cmake compiler-warnings catkin
1个回答
1
投票
[如果您不希望编译器从包含的第三方头文件中生成警告,则可以在gcc / clang中将其作为“系统头”(命令行选项-isystem而不是-I)。

要在CMake中执行此操作,请使用SYSTEM中的target_include_directories选项:

target_include_directories(mylib SYSTEM PUBLIC ${thirdPartyLib_INCLUDE_DIRS} )

© www.soinside.com 2019 - 2024. All rights reserved.