Collision Checker Compile error on MacOS

Mac OS Catalina 10.15.3
miniconda-py3.7
Eigen3, FCL, and CCD have been installed

➜ cmake -DADD_PYTHON_BINDINGS=TRUE -DPATH_TO_PYTHON_ENVIRONMENT="/Users/mac/opt/miniconda3/envs/commonroad" -DPYTHON_VERSION="3.7" -DCMAKE_BUILD_TYPE=Release cmake  ..
-- The C compiler identification is AppleClang 11.0.0.11000033
-- The CXX compiler identification is AppleClang 11.0.0.11000033
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
--  
-- Found PythonInterp: /Users/mac/opt/miniconda3/envs/commonroad/bin/python3.7m (found version "3.7.6") 
-- Found PythonLibs: /Users/mac/opt/miniconda3/envs/commonroad/lib/libpython3.7m.so
-- Performing Test HAS_CPP14_FLAG
-- Performing Test HAS_CPP14_FLAG - Success
-- pybind11 v2.2.4
-- Performing Test HAS_FLTO
-- Performing Test HAS_FLTO - Success
-- LTO enabled
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2") 
-- Checking for module 'fcl>=0.3.1'
--   Found fcl, version 0.6.1
-- Found FCL: fcl;ccd;m  
-- Checking for module 'ccd>=2.0'
--   Found ccd, version 2.0
-- Found CCD: ccd;m  
CMake Error at cpp/CMakeLists.txt:64 (message):
  Could NOT find required library libfcl


-- Configuring incomplete, errors occurred!
See also "/Users/mac/Downloads/commonroad-collision-checker-master/build/CMakeFiles/CMakeOutput.log".

I used two macs, tried many times, and made the same mistake. Please help us~Thanks!

Hi Rankin,

The error says that fcl could not be found. Have you install the fcl library correctly?

$ mkdir build && cd build
$ cmake ..
$ make
$ sudo make install

can you share the message of the above commands when you install fcl? (as stated in https://gitlab.lrz.de/tum-cps/commonroad-collision-checker)

1 Like

And after I tried to cli your docker to test again, I found that your docker also has this problem.So I don’t know how you installed it.

Dear Sir,

The problem seems to be specific to your environment. Although we could not reproduce the problem on our mac machines (different MacOS version), it really seems like a simple problem of getting MacOS to find fcl.

Could you possibly replace CMakeLists.txt from cpp folder with the following content, try to run cmake -DADD_PYTHON_BINDINGS=TRUE -DPATH_TO_PYTHON_ENVIRONMENT="/path/to/your/anaconda3/envs/commonroad-py36" -DPYTHON_VERSION="3.6" -DCMAKE_BUILD_TYPE=Release .. again and post the command output on the forum? Thank you very much!

set(COLLISION_SRC_ROOT “collision/src”)

set(COLLISION_SRC
${COLLISION_SRC_ROOT}/raytrace_primitive.cc
${COLLISION_SRC_ROOT}/shape_group.cc
${COLLISION_SRC_ROOT}/collision_object.cc
${COLLISION_SRC_ROOT}/collision_checker.cc
${COLLISION_SRC_ROOT}/primitive_collision_checker.cc
${COLLISION_SRC_ROOT}/raytrace_utils.cc
${COLLISION_SRC_ROOT}/collision_object_ex.cc
${COLLISION_SRC_ROOT}/time_variant_collision_object.cc
${COLLISION_SRC_ROOT}/solvers/distance_queries.cc
${COLLISION_SRC_ROOT}/solvers/collision_queries.cc
${COLLISION_SRC_ROOT}/solvers/collision_solver_default.cc
${COLLISION_SRC_ROOT}/solvers/collision_solver_fcl.cc
${COLLISION_SRC_ROOT}/solvers/collision_solver_primitive.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_collision_checker.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_distance_queries.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_broadphase_manager_factories.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_distance_requests.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_collision_queries.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_collision_object_group.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_collision_requests.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_collision_object.cc
${COLLISION_SRC_ROOT}/solvers/fcl/fcl_entity_factory.cc
${COLLISION_SRC_ROOT}/solvers/fcl/performance_timers.cc
${COLLISION_SRC_ROOT}/solvers/fcl/solver_entity_fcl.cc
${COLLISION_SRC_ROOT}/plugins/triangulation/triangulate.cc
${COLLISION_SRC_ROOT}/serialize/serialize_rectangle_aabb.cc
${COLLISION_SRC_ROOT}/serialize/serialize_collision_checker.cc
${COLLISION_SRC_ROOT}/serialize/serialize_rectangle_obb.cc
${COLLISION_SRC_ROOT}/serialize/serialize_tv_object.cc
${COLLISION_SRC_ROOT}/serialize/serialize_point.cc
${COLLISION_SRC_ROOT}/serialize/serialize_triangle.cc
${COLLISION_SRC_ROOT}/serialize/serialize_container_cc_obj.cc
${COLLISION_SRC_ROOT}/serialize/serialize_container_obj_obj.cc
${COLLISION_SRC_ROOT}/serialize/serialize_polygon.cc
${COLLISION_SRC_ROOT}/serialize/serialize_shape_group.cc
${COLLISION_SRC_ROOT}/serialize/serialize.cc
${COLLISION_SRC_ROOT}/serialize/serialize_sphere.cc
${COLLISION_SRC_ROOT}/serialize/public/serialize_public.cc
${COLLISION_SRC_ROOT}/serialize/final/collision_object_export_final.cc
${COLLISION_SRC_ROOT}/narrowphase/polygon.cc
${COLLISION_SRC_ROOT}/narrowphase/rectangle_aabb.cc
${COLLISION_SRC_ROOT}/narrowphase/triangle.cc
${COLLISION_SRC_ROOT}/narrowphase/rectangle_obb.cc
${COLLISION_SRC_ROOT}/narrowphase/shape.cc
${COLLISION_SRC_ROOT}/narrowphase/point.cc
${COLLISION_SRC_ROOT}/narrowphase/sphere.cc
tests/collision/online_tests/broadphase_test.cc
tests/collision/online_tests/test_common.cc
)

set(LIB_CRCC_SRC ${LIB_CRCC_SRC} ${COLLISION_SRC})

find_package(fcl REQUIRED)

find_package(ccd REQUIRED)

find_library(S11N_LIBRARY s11n HINTS ${PC_LIBS11N_LIBRARIES})

message(STATUS ${FCL_LIBRARIES})

message(STATUS ${FCL_FOUND})

if(NOT fcl_FOUND AND NOT FCL_FOUND)
message(FATAL_ERROR “Could NOT find required library libfcl”)
endif()

add_library(crcc ${LIB_CRCC_SRC})

target_compile_features(crcc
PUBLIC cxx_lambdas cxx_auto_type
PRIVATE cxx_lambdas cxx_auto_type)
set_property(TARGET crcc PROPERTY POSITION_INDEPENDENT_CODE ON)
set(COLLISION_INCLUDES “./collision/include” “.”)
target_include_directories(crcc PUBLIC ${COLLISION_INCLUDES})

if(NOT S11N_LIBRARY)
set(S11N_LIBRARY “”)
add_definitions(-DENABLE_SERIALIZER=0)
endif()
target_link_libraries(crcc PUBLIC ccd ${FCL_LIBRARIES} ${S11N_LIBRARY})