我正在尝试下面的示例:
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
在编译file时由包含的头文件生成的my_code.cpp
。
如果您不想让编译器从包含的第三方头文件中生成警告,则可以在gcc / clang中将其作为“系统头”包含(命令行选项,-isystem
而不是-I
)。
为此,请在CMake中使用SYSTEM
选项target_include_directories
:
target_include_directories(mylib
SYSTEM
PUBLIC ${thirdPartyLib_INCLUDE_DIRS}
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句