142 lines
3.8 KiB
CMake
Executable File
142 lines
3.8 KiB
CMake
Executable File
cmake_minimum_required(VERSION 3.0.2)
|
|
project(navfn)
|
|
|
|
include(CheckIncludeFile)
|
|
|
|
find_package(catkin REQUIRED
|
|
COMPONENTS
|
|
cmake_modules
|
|
costmap_2d
|
|
geometry_msgs
|
|
message_generation
|
|
nav_core
|
|
nav_msgs
|
|
pluginlib
|
|
rosconsole
|
|
roscpp
|
|
tf2_ros
|
|
sensor_msgs
|
|
visualization_msgs
|
|
)
|
|
|
|
find_package(Eigen3 REQUIRED)
|
|
include_directories(
|
|
include
|
|
${catkin_INCLUDE_DIRS}
|
|
${EIGEN3_INCLUDE_DIRS}
|
|
)
|
|
add_definitions(${EIGEN3_DEFINITIONS})
|
|
|
|
|
|
# services
|
|
add_service_files(
|
|
DIRECTORY srv
|
|
FILES
|
|
MakeNavPlan.srv
|
|
SetCostmap.srv
|
|
)
|
|
|
|
generate_messages(
|
|
DEPENDENCIES
|
|
geometry_msgs
|
|
)
|
|
|
|
catkin_package(
|
|
INCLUDE_DIRS
|
|
include
|
|
LIBRARIES
|
|
navfn
|
|
CATKIN_DEPENDS
|
|
geometry_msgs
|
|
message_runtime
|
|
nav_core
|
|
nav_msgs
|
|
pluginlib
|
|
roscpp
|
|
sensor_msgs
|
|
visualization_msgs
|
|
)
|
|
|
|
check_include_file(sys/time.h HAVE_SYS_TIME_H)
|
|
if (HAVE_SYS_TIME_H)
|
|
add_definitions(-DHAVE_SYS_TIME_H)
|
|
endif (HAVE_SYS_TIME_H)
|
|
|
|
add_library (navfn src/navfn.cpp src/navfn_ros.cpp)
|
|
target_link_libraries(navfn
|
|
${catkin_LIBRARIES}
|
|
)
|
|
add_dependencies(navfn ${PROJECT_NAME}_generate_messages_cpp ${catkin_EXPORTED_TARGETS})
|
|
|
|
add_executable(navfn_node src/navfn_node.cpp)
|
|
target_link_libraries(navfn_node
|
|
navfn
|
|
)
|
|
|
|
install(TARGETS navfn_node
|
|
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION}
|
|
)
|
|
|
|
install(TARGETS navfn
|
|
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION}
|
|
RUNTIME DESTINATION ${CATKIN_GLOBAL_BIN_DESTINATION}
|
|
)
|
|
|
|
install(DIRECTORY include/navfn/
|
|
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION}
|
|
)
|
|
|
|
install(FILES bgp_plugin.xml
|
|
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
|
|
)
|
|
|
|
### The problem with FindFLTK is that it only reports success if *all*
|
|
### fltk components are installed, but we only need the core library.
|
|
# include (FindFLTK)
|
|
include (CheckIncludeFileCXX)
|
|
check_include_file_cxx (FL/Fl.H NAVFN_HAVE_FLTK)
|
|
check_include_file_cxx (pgm.h NAVFN_HAVE_NETPBM)
|
|
message (STATUS "NAVFN_HAVE_FLTK: ${NAVFN_HAVE_FLTK}, NETPBM: ${NAVFN_HAVE_NETPBM}")
|
|
# Just linking -lfltk is not sufficient on OS X
|
|
if (NAVFN_HAVE_FLTK AND NAVFN_HAVE_NETPBM AND NOT APPLE)
|
|
message (STATUS "FLTK found: adding navtest to build")
|
|
add_executable (navtest src/navtest/navtest.cpp src/navtest/navwin.cpp)
|
|
set (FLTK_SKIP_FLUID 1)
|
|
set (FLTK_SKIP_FORMS 1)
|
|
set (FLTK_SKIP_IMAGES 1)
|
|
find_package(FLTK)
|
|
if(FLTK_FOUND)
|
|
target_link_libraries (navtest navfn netpbm ${FLTK_LIBRARIES})
|
|
else (FLTK_FOUND)
|
|
target_link_libraries (navtest navfn netpbm fltk)
|
|
endif (FLTK_FOUND)
|
|
else (NAVFN_HAVE_FLTK)
|
|
message (STATUS "FLTK orf NETPBM not found: cannot build navtest")
|
|
endif (NAVFN_HAVE_FLTK AND NAVFN_HAVE_NETPBM AND NOT APPLE)
|
|
|
|
### For some reason (on cmake-2.4.7 at least) the "check" for pgm.h
|
|
### always succeeds, even if pgm.h is not installed. It seems to be
|
|
### caused by a bug in the rule that attempts to build the C source:
|
|
### instead of directly calling e.g. 'gcc -c
|
|
### /CMakeFiles/CMakeTmp/CheckIncludeFile.c' it goes through some make
|
|
### infrastructure, which reports "Nothing to be done for
|
|
### `CMakeFiles/cmTryCompileExec.dir/build'" and calls that a success.
|
|
###
|
|
### As a workaround we simply force everyone to install libnetpbm
|
|
#
|
|
# include (CheckIncludeFile)
|
|
# check_include_file (pgm.h NAVFN_HAVE_NETPBM)
|
|
# message (STATUS "NAVFN_HAVE_NETPBM: ${NAVFN_HAVE_NETPBM}")
|
|
# if (NAVFN_HAVE_NETPBM)
|
|
# message (STATUS "found pgm.h")
|
|
# add_definitions (-DNAVFN_HAVE_NETPBM)
|
|
#target_link_libraries (navfn -lnetpbm)
|
|
# else (NAVFN_HAVE_NETPBM)
|
|
# message (STATUS "pgm.h not found (optional)")
|
|
# endif (NAVFN_HAVE_NETPBM)
|
|
|
|
if(CATKIN_ENABLE_TESTING)
|
|
add_subdirectory(test)
|
|
endif()
|