diff --git a/.gitignore b/.gitignore index 2572316e355dc7d0ba426e980bbd7ac604b3dd07..a765f7cef67ed2e3e4735ac0f5f23e12c2ed3de5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -install/ -build/ -log/ +install +build +log *.blend1 \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 708d6b7ce0b6c98c3f15190d4f9da2f5b06ab9bb..fbc225f739fda92eb0cd37528f7b6965331fd55c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,6 @@ -cmake_minimum_required(VERSION 3.12) project(scigl_render) -# Default ROS2 configurations for compilation -if(NOT CMAKE_CXX_STANDARD) - set(CMAKE_CXX_STANDARD 11) -endif() -set(CMAKE_POSITION_INDEPENDENT_CODE ON) +cmake_minimum_required(VERSION 2.8.3) # using conan to manage dependencies if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") @@ -13,15 +8,15 @@ if(NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.13/conan.cmake" "${CMAKE_BINARY_DIR}/conan.cmake") endif() -include(${CMAKE_BINARY_DIR}/conan.cmake) -conan_cmake_run( - REQUIRES - Assimp/4.1.0@jacmoe/stable - gl3w/0.1@tuebel/experimental - glm/0.9.9.1@g-truc/stable - glfw/3.2.1@bincrafters/stable - BASIC_SETUP CMAKE_TARGETS - BUILD missing) +if(CONAN_EXPORTED) # when packaging + include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) + conan_basic_setup() +else() # in user space + include(${CMAKE_BINARY_DIR}/conan.cmake) + conan_cmake_run(CONANFILE conanfile.py + BASIC_SETUP + BUILD missing) +endif() # prefer new ABI for OpenGL set(OpenGL_GL_PREFERENCE "GLVND") @@ -41,15 +36,8 @@ target_sources(scigl_render PRIVATE src/shader/depth_shader.cpp src/shader/shader.cpp src/shader/single_texture_shader.cpp) -target_include_directories(scigl_render PUBLIC - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> - $<INSTALL_INTERFACE:include>) -target_link_libraries(scigl_render PUBLIC - CONAN_PKG::gl3w - CONAN_PKG::glfw - CONAN_PKG::glm - CONAN_PKG::Assimp) -target_compile_options(scigl_render PRIVATE -Wall -Wextra) +target_include_directories(scigl_render PUBLIC include) +target_link_libraries(scigl_render ${CONAN_LIBS}) # example apps add_executable(scigl_viewer @@ -63,31 +51,3 @@ add_executable(scigl_depth_viewer src/example/example_render.cpp) target_link_libraries(scigl_depth_viewer scigl_render) - - -# install target -install(DIRECTORY include/scigl_render DESTINATION include) -install(TARGETS scigl_render scigl_viewer scigl_depth_viewer - EXPORT scigl_render_targets - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - RUNTIME DESTINATION bin - INCLUDES DESTINATION include) -# versioning -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - scigl_renderConfigVersion.cmake - VERSION 0.1 - COMPATIBILITY AnyNewerVersion) -# for find_package support -install(EXPORT scigl_render_targets - FILE scigl_render_targets.cmake - DESTINATION lib/cmake/scigl_render) -configure_file(scigl_renderConfig.cmake.in scigl_renderConfig.cmake @ONLY) -install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/scigl_renderConfig.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/scigl_renderConfigVersion.cmake" - DESTINATION lib/cmake/scigl_render) -# export for source tree -export(TARGETS scigl_render FILE scigl_render_targets.cmake) -export(PACKAGE scigl_render) diff --git a/README.md b/README.md index 6814592a6c3315bdcdfc0c978416b61d75c212c6..0a4123f85f0812c492e4b0da84be88a04f47c9a7 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ in ROS2. The dependencies are handled via [conan.io](https://conan.io/). Please add the following repositories: ```bash -conan remote add tuebel https://api.bintray.com/conan/tuebel/gl3w +conan remote add tuebel-gl3w https://api.bintray.com/conan/tuebel/gl3w conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan conan remote add conan-transit https://api.bintray.com/conan/conan/conan-transit ``` diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 0000000000000000000000000000000000000000..f831034af206fe698dd434f56e80f93b9e5caf82 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,42 @@ +from conans import ConanFile, CMake + + +class SciglRenderConan(ConanFile): + name = "scigl_render" + version = "0.1" + license = "MIT" + url = "https://git.rwth-aachen.de/robo_guide/scigl_render" + description = ("Library to simplify rendering objects via OpenGL." + "The intendet use case is scientific " + "(e.g. probabalistic filtering).") + settings = "os", "compiler", "build_type", "arch" + requires = ("Assimp/4.1.0@jacmoe/stable", + "gl3w/0.2@tuebel/testing", + "glm/0.9.9.1@g-truc/stable", + "glfw/3.2.1@bincrafters/stable") + generators = "cmake" + exports = "CMakeLists.txt" + exports_sources = "src/*", "include/*" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = "shared=False", "fPIC=True" + + def configure(self): + if self.settings.compiler == 'Visual Studio': + del self.options.fPIC + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def package(self): + self.copy("*.h", dst="include", src="include", keep_path=True) + self.copy("*.hpp", dst="include", src="include", keep_path=True) + self.copy("*.lib", dst="lib", keep_path=False) + self.copy("*.dll", dst="bin", keep_path=False) + self.copy("*.dylib*", dst="lib", keep_path=False) + self.copy("*.so", dst="lib", keep_path=False) + self.copy("*.a", dst="lib", keep_path=False) + + def package_info(self): + self.cpp_info.libs = ["scigl_render"] diff --git a/package.xml b/package.xml index 5649b1f3d49fa20bc43f3c71f71e07fbc5005457..7fa344812e73c0eea83140a3f3c5bb58065a63c3 100644 --- a/package.xml +++ b/package.xml @@ -20,6 +20,7 @@ <doc_depend>doxygen</doc_depend> <buildtool_depend>cmake</buildtool_depend> + <buildtool_depend>conan</buildtool_depend> <build_depend>gl3w</build_depend> <depend>OpenGL</depend> <depend>glfw</depend> diff --git a/scigl_renderConfig.cmake.in b/scigl_renderConfig.cmake.in deleted file mode 100644 index 06cf4d6097d3fc6f9a0dffa688a24b788d9db485..0000000000000000000000000000000000000000 --- a/scigl_renderConfig.cmake.in +++ /dev/null @@ -1,15 +0,0 @@ -get_filename_component(scigl_render_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) -set(scigle_render_INCLUDE_DIRS "@CONF_INCLUDE_DIRS@") - -include(CMakeFindDependencyMacro) -find_dependency(gl3w REQUIRED) -find_dependency(glfw3 REQUIRED) -find_dependency(assimp REQUIRED) -find_dependency(glm REQUIRED) - -if(NOT TARGET scigl_render) - include(${CMAKE_CURRENT_LIST_DIR}/scigl_render_targets.cmake) -endif() - -set(scigl_render_LIBRARIES scigl_render) -set(scigl_render_EXECUTABLE scigl_viewer scigl_depth_viewer) \ No newline at end of file diff --git a/test_package/CMakeLists.txt b/test_package/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..e469d1e112abcbf7d0d737e4829daecf8a55decb --- /dev/null +++ b/test_package/CMakeLists.txt @@ -0,0 +1,8 @@ +project(PackageTest) +cmake_minimum_required(VERSION 2.8.12) + +include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake) +conan_basic_setup() + +add_executable(example example.cpp) +target_link_libraries(example ${CONAN_LIBS}) diff --git a/test_package/conanfile.py b/test_package/conanfile.py new file mode 100644 index 0000000000000000000000000000000000000000..17567084f523e80e51898c21f50f16327e8e6232 --- /dev/null +++ b/test_package/conanfile.py @@ -0,0 +1,22 @@ +from conans import ConanFile, CMake +import os + + +class Gl3wTestConan(ConanFile): + settings = "os", "compiler", "build_type", "arch" + generators = "cmake" + options = {"shared": [True, False], "fPIC": [True, False]} + default_options = "shared=False", "fPIC=True" + + def build(self): + cmake = CMake(self) + cmake.configure() + cmake.build() + + def imports(self): + self.copy("*.dll", dst="bin", src="bin") + self.copy("*.dylib*", dst="bin", src="lib") + + def test(self): + os.chdir("bin") + self.run(".%sexample" % os.sep) diff --git a/test_package/example.cpp b/test_package/example.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d01943fc044f6e8ece77811c8e002ff48ec9155d --- /dev/null +++ b/test_package/example.cpp @@ -0,0 +1,8 @@ +#include <cstdlib> +#include <scigl_render/gl_context.hpp> + +int main(int argc, char **argv) +{ + scigl_render::GLContext gl_context(true, false, 640, 480); + return EXIT_SUCCESS; +}