ament / ament_lint

Apache License 2.0
38 stars 107 forks source link

[ament_cppcheck] provide libraries #427

Open whoutman opened 1 year ago

whoutman commented 1 year ago

When configuring my CMakeLists.txt for ament_cppcheck(), LIBRARIES can be explicitly set.

However, when ament_package() is called as well, errors are raised since ament_cppcheck() is called from ament_cmake_cppcheck_lint_hook.cmake

How am I supposed to provide the relevant libraries for ament_cppcheck() while calling ament_package() in my CMakeLists.txt?

On my local system, I solved it similarly as for e.g. file exclusions. Hence I added the following in ament_cmake_cppcheck_lint_hook.cmake

# Add libraries for added targets
set(_all_libraries "")
if(DEFINED ament_cmake_cppcheck_ADDITIONAL_LIBRARIES)
   list(APPEND _all_libraries ${ament_cmake_cppcheck_ADDITIONAL_LIBRARIES})
endif()

and called ament_cppcheck as

  ament_cppcheck(
          ${_language} INCLUDE_DIRS ${_all_include_dirs} EXCLUDE ${_all_exclude} LIBRARIES ${_all_libraries}
  )

As a result, I can set e.g. the boost-configuration of cppcheck as follows:

set(ament_cmake_cppcheck_ADDITIONAL_LIBRARIES "boost")

Is this how it is supposed to work or am I missing something? If necessary, I am willing to create a PR.