Skip to content

Commit b164ca0

Browse files
authored
Merge pull request #1 from ascentai/feature/pure-cmake
Feature/pure cmake
2 parents 6a810a8 + e9e8513 commit b164ca0

39 files changed

+250
-162
lines changed

CMakeLists.txt

Lines changed: 0 additions & 146 deletions
This file was deleted.

gl_depth_sim/CMakeLists.txt

Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
cmake_minimum_required(VERSION 3.5.0)
2+
project(gl_depth_sim VERSION 0.2.0 LANGUAGES C CXX)
3+
4+
# Required for core functionality
5+
find_package(glfw3 REQUIRED)
6+
find_package(OpenGL REQUIRED)
7+
find_package(Eigen3 REQUIRED)
8+
find_package(PCL REQUIRED)
9+
find_package(OpenCV REQUIRED)
10+
11+
find_package(Threads REQUIRED)
12+
set(THREADS_PREFER_PTHREAD_FLAG ON)
13+
14+
# Extensions
15+
find_package(assimp REQUIRED) # Just used for loading models in mesh_loader.h
16+
find_package(OpenCV REQUIRED) # Used for interface extension
17+
18+
add_library(glad SHARED src/${PROJECT_NAME}/glad.c)
19+
target_include_directories(glad PRIVATE
20+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
21+
"$<INSTALL_INTERFACE:include>")
22+
23+
# Primary rendering library
24+
# Independent of ROS, but does need glfw3 and assimp for model loading
25+
add_library(${PROJECT_NAME} SHARED
26+
src/${PROJECT_NAME}/sim_depth_camera.cpp
27+
src/${PROJECT_NAME}/mesh_loader.cpp
28+
src/${PROJECT_NAME}/mesh.cpp
29+
src/${PROJECT_NAME}/renderable_mesh.cpp
30+
src/${PROJECT_NAME}/shader_program.cpp
31+
src/${PROJECT_NAME}/glfw_guard.cpp)
32+
target_compile_options(${PROJECT_NAME} PRIVATE -std=c++14)
33+
target_compile_options(${PROJECT_NAME} PUBLIC -mno-avx -pthread)
34+
target_include_directories(${PROJECT_NAME} PUBLIC
35+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
36+
"$<INSTALL_INTERFACE:include>")
37+
target_include_directories(${PROJECT_NAME} SYSTEM PUBLIC
38+
${EIGEN3_INCLUDE_DIR})
39+
target_link_libraries(${PROJECT_NAME} PUBLIC
40+
${ASSIMP_LIBRARIES}
41+
${OPENGL_LIBRARIES}
42+
glad
43+
dl
44+
glfw
45+
)
46+
47+
# Libaries for interfacing with opencv and pcl
48+
add_library(${PROJECT_NAME}_interfaces SHARED
49+
src/interfaces/pcl_interface.cpp
50+
src/interfaces/opencv_interface.cpp)
51+
target_compile_options(${PROJECT_NAME}_interfaces PRIVATE -std=c++14)
52+
target_include_directories(${PROJECT_NAME} PUBLIC
53+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
54+
"$<INSTALL_INTERFACE:include>")
55+
target_include_directories(${PROJECT_NAME}_interfaces SYSTEM PUBLIC
56+
${PCL_INCLUDE_DIRS})
57+
target_link_libraries(${PROJECT_NAME}_interfaces PUBLIC
58+
${PROJECT_NAME}
59+
${OpenCV_LIBRARIES}
60+
${PCL_LIBRARIES}
61+
)
62+
63+
# Simulated laser scanner library
64+
add_library(${PROJECT_NAME}_laser_scanner SHARED
65+
src/${PROJECT_NAME}/sim_laser_scanner.cpp
66+
)
67+
target_compile_options(${PROJECT_NAME}_laser_scanner PRIVATE -std=c++14)
68+
target_include_directories(${PROJECT_NAME} PUBLIC
69+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
70+
"$<INSTALL_INTERFACE:include>"
71+
)
72+
target_link_libraries(${PROJECT_NAME}_laser_scanner PUBLIC
73+
${PROJECT_NAME}
74+
${PROJECT_NAME}_interfaces
75+
)
76+
77+
# Example showing basic usage
78+
add_executable(${PROJECT_NAME}_test src/usage_example.cpp)
79+
target_compile_options(${PROJECT_NAME}_test PRIVATE -std=c++14)
80+
set_target_properties(${PROJECT_NAME}_test PROPERTIES OUTPUT_NAME depth_example PREFIX "")
81+
target_include_directories(${PROJECT_NAME}_test PUBLIC
82+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCEDIR}/include>"
83+
"$<INSTALL_INTERFACE:include>")
84+
target_link_libraries(${PROJECT_NAME}_test PUBLIC
85+
${PROJECT_NAME}
86+
${PROJECT_NAME}_interfaces)
87+
88+
# Example showing an orbiting camera
89+
add_executable(${PROJECT_NAME}_orbit src/camera_orbit_example.cpp)
90+
target_compile_options(${PROJECT_NAME}_orbit PRIVATE -std=c++14)
91+
set_target_properties(${PROJECT_NAME}_orbit PROPERTIES OUTPUT_NAME orbit_example PREFIX "")
92+
target_include_directories(${PROJECT_NAME}_orbit PUBLIC
93+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
94+
"$<INSTALL_INTERFACE:include>")
95+
target_link_libraries(${PROJECT_NAME}_orbit PUBLIC
96+
${PROJECT_NAME}
97+
${PROJECT_NAME}_interfaces)
98+
99+
install(DIRECTORY include/${PROJECT_NAME}
100+
DESTINATION include)
101+
102+
install(TARGETS
103+
glad
104+
${PROJECT_NAME}
105+
${PROJECT_NAME}_interfaces
106+
${PROJECT_NAME}_laser_scanner
107+
${PROJECT_NAME}_test
108+
${PROJECT_NAME}_orbit
109+
EXPORT ${PROJECT_NAME}-targets
110+
RUNTIME DESTINATION bin
111+
LIBRARY DESTINATION lib
112+
ARCHIVE DESTINATION lib)
113+
install(EXPORT ${PROJECT_NAME}-targets NAMESPACE gl_depth_sim:: DESTINATION lib/cmake/${PROJECT_NAME})
114+
115+
install(FILES package.xml DESTINATION share/${PROJECT_NAME})
116+
117+
# Create cmake config files
118+
include(CMakePackageConfigHelpers)
119+
configure_package_config_file(${CMAKE_CURRENT_LIST_DIR}/cmake/${PROJECT_NAME}-config.cmake.in
120+
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake
121+
INSTALL_DESTINATION lib/cmake/${PROJECT_NAME}
122+
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
123+
124+
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake
125+
VERSION ${PROJECT_VERSION} COMPATIBILITY ExactVersion)
126+
127+
install(FILES
128+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake"
129+
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake"
130+
DESTINATION lib/cmake/${PROJECT_NAME})
131+
132+
export(EXPORT ${PROJECT_NAME}-targets NAMESPACE gl_depth_sim:: FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-targets.cmake)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
@PACKAGE_INIT@
2+
3+
set(@PROJECT_NAME@_FOUND ON)
4+
set_and_check(@PROJECT_NAME@_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include")
5+
set_and_check(@PROJECT_NAME@_LIBRARY_DIRS "${PACKAGE_PREFIX_DIR}/lib")
6+
7+
include(CMakeFindDependencyMacro)
8+
find_dependency(Eigen3)
9+
find_dependency(assimp)
10+
find_dependency(OpenCV)
11+
find_dependency(OpenGL)
12+
find_dependency(glfw3)
13+
14+
15+
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@-targets.cmake")
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)