Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 29 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,31 @@ project(uvc_ros_driver)
set(CMAKE_CXX_FLAGS "-std=c++0x ${CMAKE_CXX_FLAGS} -Wno-format-security ${NEON_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NEON_FLAGS}")

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${PROJECT_SOURCE_DIR}/cmake/")

find_package(LibUVC REQUIRED)
if (LibUVC_FOUND)
message("-- Found LibUVC library: ${LibUVC_LIBRARIES}")
message("-- Found LibUVC include dirs: ${LibUVC_INCLUDE_DIRS}")
#include_directories(${LibUVC_INCLUDE_DIRS})
else (LibUVC_FOUND)
message("-- LibUVC not found, trying to hard link libuvc")
set(LibUVC_LIBRARIES /usr/local/lib/libuvc.so)
endif (LibUVC_FOUND)


find_package(PkgConfig)

find_package(yaml_cpp_catkin QUIET)
if(${yaml_cpp_catkin_FOUND})
message(STATUS "Found yaml_cpp_catkin, using instead of system library.")
set(YamlCpp_LIBRARIES ${yaml_cpp_catkin_LIBRARIES})
set(YamlCpp_INCLUDE_DIRS ${yaml_cpp_catkin_INCLUDE_DIRS})
else()
message(STATUS "No yaml_cpp_catkin, using yaml-cpp system library instead.")
pkg_check_modules(YamlCpp REQUIRED yaml-cpp>=0.5)
endif()

## Find catkin macros and libraries
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz)
## is used, also find other catkin packages
Expand Down Expand Up @@ -130,6 +155,7 @@ catkin_package(
include_directories(
${catkin_INCLUDE_DIRS}
${Eigen3_INCLUDE_DIRS}
${YamlCpp_INCLUDE_DIRS}
include
/usr/include/libusb-1.0
src/nodes/c_library
Expand All @@ -147,7 +173,8 @@ add_library(uvc_ros_driver SHARED
target_link_libraries(uvc_ros_driver
yaml-cpp
${catkin_LIBRARIES}
/usr/local/lib/libuvc.so #TODO link by usign find_package
${LibUVC_LIBRARIES}
${YamlCpp_LIBRARIES}
)

## Add cmake target dependencies of the library
Expand All @@ -168,6 +195,7 @@ add_executable(uvc_ros_driver_node
target_link_libraries(uvc_ros_driver_node
uvc_ros_driver
${catkin_LIBRARIES}
${YamlCpp_LIBRARIES}
)

#############
Expand Down
38 changes: 38 additions & 0 deletions cmake/FindLibUVC.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

# - Finds libUVC and all dependencies
# Once done this will define
# LibUVC_FOUND - System has libUVC
# LibUVC_INCLUDE_DIRS - The libUVC include directories
# LibUVC_LIBRARIES - The libraries needed to use libUVC

find_library(LibUVC_LIBRARY
NAMES libuvc.so libuvc.lib libuvc.dylib
PATHS ${LibUVC_ROOT}/lib
/usr/local/lib
)

if(NOT LibUVC_IGNORE_HEADERS)
find_path(LibUVC_INCLUDE_DIR
NAMES libuvc_config.h libuvc.h
PATHS ${LibUVC_ROOT}/include
/usr/include
/usr/local/include
/usr/local/Cellar
)
endif()

# brew installed libuvc include dirs on os x are hard to find and depends on the installed version.
if(LibUVC_INCLUDE_DIR STREQUAL "LibUVC_INCLUDE_DIR-NOTFOUND")
file(GLOB LibUVC_INCLUDE_DIR /usr/local/Cellar/libuvc/*/include/libuvc/libuvc_config.h
/usr/local/Cellar/libuvc/*/include/libuvc/libuvc.h)
endif()

if((LibUVC_LIBRARY STREQUAL "LibUVC_LIBRARY-NOTFOUND") OR (LibUVC_INCLUDE_DIR STREQUAL "LibUVC_INCLUDE_DIR-NOTFOUND"))
set(LibUVC_ROOT "" CACHE PATH "Path to the root of a libuvc installation")
set(LibUVC_FOUND 1)
message(WARNING "LibUVC not found. Please try specifying LibUVC_ROOT")
else()
set(LibUVC_FOUND 1)
set(LibUVC_INCLUDE_DIRS ${LibUVC_INCLUDE_DIR})
set(LibUVC_LIBRARIES ${LibUVC_LIBRARY})
endif()