FreeCAD / src /Mod /Robot /App /CMakeLists.txt
AbdulElahGwaith's picture
Upload folder using huggingface_hub
985c397 verified
# SPDX-License-Identifier: LGPL-2.1-or-later
add_library(Robot SHARED)
target_include_directories(
Robot
PRIVATE
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/src
${CMAKE_BINARY_DIR}/src
${CMAKE_CURRENT_BINARY_DIR}
)
target_include_directories(
Robot
SYSTEM
PUBLIC
${EIGEN3_INCLUDE_DIR}
)
set(Robot_LIBS
Part
${QT_QTCORE_LIBRARY}
FreeCADApp
)
generate_from_py(Robot6Axis)
generate_from_py(Trajectory)
generate_from_py(Waypoint)
generate_from_py(RobotObject)
SET(Python_SRCS
Robot6Axis.pyi
Robot6AxisPyImp.cpp
Trajectory.pyi
TrajectoryPyImp.cpp
RobotObject.pyi
RobotObjectPyImp.cpp
Waypoint.pyi
WaypointPyImp.cpp
)
SET(Mod_SRCS
AppRobot.cpp
PreCompiled.h
)
SET(Robot_SRCS
RobotObject.cpp
RobotObject.h
TrajectoryObject.cpp
TrajectoryObject.h
TrajectoryDressUpObject.cpp
TrajectoryDressUpObject.h
TrajectoryCompound.cpp
TrajectoryCompound.h
Edge2TracObject.cpp
Edge2TracObject.h
PropertyTrajectory.cpp
PropertyTrajectory.h
RobotAlgos.cpp
RobotAlgos.h
Robot6Axis.cpp
Robot6Axis.h
Trajectory.cpp
Trajectory.h
Simulation.cpp
Simulation.h
Waypoint.cpp
Waypoint.h
${Mod_SRCS}
${Python_SRCS}
)
if(FREECAD_USE_PCH)
target_precompile_headers(Robot PRIVATE
$<$<COMPILE_LANGUAGE:CXX>:"${CMAKE_CURRENT_LIST_DIR}/PreCompiled.h">
)
endif(FREECAD_USE_PCH)
# FIXME: The bundled KDL has some extensions which makes it incompatible
# to an installed KDL. To fix the issue two things must be done:
# * revert the changes (and look for an alternative)
# * it must be avoided to include headers of the bundled version if the
# installed version is used
#
# use external kdl
#if (FREECAD_USE_EXTERNAL_KDL)
# find_library(KDL_LIBRARY orocos-kdl)
# find_path(KDL_INCLUDES kdl/kdl.hpp)
# if(KDL_LIBRARY)
# message(STATUS "Found orocos-kdl: ${KDL_LIBRARY}")
# endif()
# if(KDL_INCLUDES)
# message(STATUS "Found orocus_kdl headers: ${KDL_INCLUDES}")
# endif()
# if(KDL_LIBRARY AND KDL_INCLUDES)
# list(APPEND Robot_LIBS ${KDL_LIBRARY})
# include_directories(${KDL_INCLUDES})
# else()
# message(FATAL_ERROR "Using external orocos-kdl was specified but was not found.")
# endif()
#
#else(FREECAD_USE_EXTERNAL_KDL)
# here we use the internal supplied kdl
add_definitions(-DKDL_USE_NEW_TREE_INTERFACE=1)
FILE( GLOB KDL_SRCS kdl_cp/[^.]*.cpp )
FILE( GLOB KDL_HPPS kdl_cp/[^.]*.hpp kdl_cp/[^.]*.inl)
FILE( GLOB UTIL_SRCS kdl_cp/utilities/[^.]*.cpp kdl_cp/utilities/[^.]*.cxx)
FILE( GLOB UTIL_HPPS kdl_cp/utilities/[^.]*.h kdl_cp/utilities/[^.]*.hpp)
SET(Robot_SRCS
${Robot_SRCS}
${KDL_SRCS}
${KDL_HPPS}
${UTIL_SRCS}
${UTIL_HPPS}
)
SOURCE_GROUP("KDL" FILES ${KDL_SRCS} ${KDL_HPPS} ${UTIL_SRCS} ${UTIL_HPPS} )
#endif(FREECAD_USE_EXTERNAL_KDL)
SOURCE_GROUP("Python" FILES ${Python_SRCS})
SOURCE_GROUP("Module" FILES ${Mod_SRCS})
target_sources(Robot PRIVATE ${Robot_SRCS})
target_link_libraries(Robot ${Robot_LIBS})
if (FREECAD_WARN_ERROR)
target_compile_warn_error(Robot)
endif()
unset(_flag_found CACHE)
check_cxx_compiler_flag("-Wno-deprecated-copy" _flag_found)
if (_flag_found)
target_compile_options(Robot PRIVATE -Wno-deprecated-copy)
endif()
if(MINGW)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--export-all-symbols")
endif()
SET_BIN_DIR(Robot Robot /Mod/Robot)
SET_PYTHON_PREFIX_SUFFIX(Robot)
INSTALL(TARGETS Robot DESTINATION ${CMAKE_INSTALL_LIBDIR})