Skip to content

Commit 40036a9

Browse files
committed
Enable initial compilation with catkin
1 parent 02a0f87 commit 40036a9

File tree

3 files changed

+98
-34
lines changed

3 files changed

+98
-34
lines changed

CMakeLists.txt

Lines changed: 65 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,77 @@
1-
cmake_minimum_required (VERSION 3.9)
1+
cmake_minimum_required (VERSION 3.0.2)
2+
project(limbo VERSION 2.1 DESCRIPTION "limbo LIbrary for Model-Based Optimization")
23

3-
project(limbo)
4+
# Cpp standard
5+
set(CMAKE_CXX_STANDARD 14)
46

5-
# Default to C99
6-
if(NOT CMAKE_C_STANDARD)
7-
set(CMAKE_C_STANDARD 99)
8-
endif()
7+
# # Compiler options
8+
# add_compile_options(-Wall -Wextra -Wpedantic)
99

10-
# Default to C++14
11-
if(NOT CMAKE_CXX_STANDARD)
12-
set(CMAKE_CXX_STANDARD 14)
13-
endif()
10+
# # Dependencies
11+
# # Eigen
12+
# find_package(Eigen3 REQUIRED)
1413

15-
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
16-
add_compile_options(-Wall -Wextra -Wpedantic)
17-
endif()
14+
# # Boost
15+
# set(Boost_USE_STATIC_LIBS OFF)
16+
# set(Boost_USE_MULTITHREADED ON)
17+
# set(Boost_USE_STATIC_RUNTIME OFF)
18+
# find_package(Boost 1.45.0 REQUIRED COMPONENTS system filesystem thread unit_test_framework)
19+
# if(Boost_FOUND)
20+
# include_directories(${Boost_INCLUDE_DIRS})
21+
# endif()
1822

19-
file(GLOB headers src/limbo/*.hpp)
23+
# # TBB
24+
# find_package(TBB REQUIRED)
2025

21-
find_package(Eigen3 REQUIRED)
26+
# # # NLOpt
27+
# find_package(NLopt REQUIRED)
28+
# if(NLopt_FOUND)
29+
# include_directories(${NLOPT_INCLUDE_DIRS})
30+
# add_definitions(-DUSE_NLOPT)
31+
# endif()
2232

23-
set(Boost_USE_STATIC_LIBS OFF)
24-
set(Boost_USE_MULTITHREADED ON)
25-
set(Boost_USE_STATIC_RUNTIME OFF)
26-
find_package(Boost 1.45.0 REQUIRED COMPONENTS system filesystem thread unit_test_framework)
33+
# # Add library
34+
# add_library(limbo INTERFACE IMPORTED GLOBAL) # Interface because it's header only
2735

28-
if(Boost_FOUND)
29-
include_directories(${Boost_INCLUDE_DIRS})
30-
endif()
36+
include(ExternalProject)
37+
ExternalProject_Add(limbo_src
38+
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}
39+
CONFIGURE_COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} && ./waf configure
40+
BUILD_COMMAND cd ${CMAKE_CURRENT_SOURCE_DIR} && ./waf build
41+
INSTALL_COMMAND ""
42+
)
43+
44+
# Install
45+
include(GNUInstallDirs)
46+
# Install binaries
47+
install(
48+
FILES ${CMAKE_CURRENT_SOURCE_DIR}/build/src/liblimbo.a
49+
DESTINATION ${CMAKE_INSTALL_LIBDIR}
50+
)
51+
# Install headers
52+
install(DIRECTORY
53+
${CMAKE_CURRENT_SOURCE_DIR}/src/limbo
54+
${CMAKE_CURRENT_SOURCE_DIR}/src/external
55+
${CMAKE_CURRENT_SOURCE_DIR}/src/hv
56+
${CMAKE_CURRENT_SOURCE_DIR}/src/ehvi
57+
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
58+
)
3159

32-
# add the binary tree to the search path for include files
33-
# so that we will find TutoriConfig.h
34-
include_directories(src/)
60+
# Export
61+
include(CMakePackageConfigHelpers)
62+
set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR})
63+
set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
3564

36-
add_library(${PROJECT_NAME} INTERFACE)
65+
configure_package_config_file(cmake/limboConfig.cmake.in
66+
${CMAKE_CURRENT_BINARY_DIR}/limboConfig.cmake
67+
INSTALL_DESTINATION ${LIB_INSTALL_DIR}/limbo/cmake
68+
PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR)
3769

38-
install(DIRECTORY src/
39-
DESTINATION include)
70+
write_basic_package_version_file(
71+
${CMAKE_CURRENT_BINARY_DIR}/limboConfigVersion.cmake
72+
VERSION 0.0.0
73+
COMPATIBILITY SameMajorVersion)
4074

41-
install(TARGETS ${PROJECT_NAME}
42-
ARCHIVE DESTINATION lib
43-
LIBRARY DESTINATION lib
44-
RUNTIME DESTINATION bin
45-
)
75+
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/limboConfig.cmake
76+
${CMAKE_CURRENT_BINARY_DIR}/limboConfigVersion.cmake
77+
DESTINATION ${LIB_INSTALL_DIR}/limbo/cmake )

cmake/limboConfig.cmake.in

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
set(limbo_VERSION 0.0.0)
2+
3+
@PACKAGE_INIT@
4+
5+
set_and_check(limbo_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@")
6+
set_and_check(limbo_INCLUDE_DIRS "@PACKAGE_INCLUDE_INSTALL_DIR@")
7+
set_and_check(limbo_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@")
8+
9+
check_required_components(Eigen)
10+
check_required_components(Boost)
11+
12+
find_package(Eigen3 REQUIRED)
13+
find_package(Boost REQUIRED)
14+
# find_package(TBB REQUIRED)
15+
# find_package(NLopt REQUIRED)
16+
17+
# add_library(_limbo INTERFACE)
18+
# set_target_properties(_limbo PROPERTIES
19+
# INTERFACE_INCLUDE_DIRECTORIES ${limbo_INCLUDE_DIR}
20+
# )
21+
22+
add_library(_limbo STATIC IMPORTED GLOBAL)
23+
set_target_properties(_limbo PROPERTIES
24+
IMPORTED_LOCATION ${limbo_LIB_DIR}/liblimbo.a
25+
INTERFACE_INCLUDE_DIRECTORIES ${limbo_INCLUDE_DIR}
26+
)
27+
target_link_libraries(_limbo INTERFACE Eigen Boost)
28+
add_library(limbo::limbo ALIAS _limbo)

package.xml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0"?>
2-
<package format="2">
2+
<package format="3">
33
<name>limbo</name>
44
<version>2.1.0</version>
55
<description>A lightweight framework for Gaussian processes and Bayesian optimization of black-box functions (C++-11)</description>
@@ -18,6 +18,10 @@
1818
<build_depend>eigen</build_depend>
1919
<build_depend>tbb</build_depend>
2020

21+
<!-- The following tags are recommended by REP-136 -->
22+
<exec_depend condition="$ROS_VERSION == 1">catkin</exec_depend>
23+
<exec_depend condition="$ROS_VERSION == 2">ament_cmake</exec_depend>
24+
2125
<export>
2226
<!-- Specify that this is not really a Catkin package-->
2327
<build_type>cmake</build_type>

0 commit comments

Comments
 (0)