mirror of
https://github.com/QuasarApp/backward-cpp.git
synced 2025-05-03 13:29:35 +00:00
conan.io package
This commit is contained in:
parent
0c0aff621c
commit
4dc425c3a0
1
.gitignore
vendored
1
.gitignore
vendored
@ -1 +1,2 @@
|
||||
build*/
|
||||
*.pyc
|
||||
|
@ -14,6 +14,7 @@ install:
|
||||
- CMAKE_URL="http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz"
|
||||
- mkdir cmake && travis_retry wget --no-check-certificate --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C cmake
|
||||
- export PATH=${DEPS_DIR}/cmake/bin:${PATH}
|
||||
- pip install --user conan && export PATH=$PATH:$HOME/.local/bin
|
||||
- cd ${TRAVIS_BUILD_DIR}
|
||||
- mkdir build && cd build
|
||||
- cmake .. -DBACKWARD_TESTS=ON
|
||||
@ -21,3 +22,4 @@ install:
|
||||
|
||||
script:
|
||||
- valgrind ctest .. --verbose
|
||||
- cd ${TRAVIS_BUILD_DIR} && conan test_package --build=outdated
|
||||
|
@ -48,6 +48,18 @@ set(BACKWARD_ENABLE $<TARGET_OBJECTS:backward_object> CACHE STRING
|
||||
"Link with this object to setup backward automatically")
|
||||
|
||||
|
||||
###############################################################################
|
||||
# BACKWARD LIBRARY (Includes backward.cpp)
|
||||
###############################################################################
|
||||
option(BACKWARD_SHARED "Build dynamic backward-cpp shared lib" OFF)
|
||||
|
||||
if(BACKWARD_SHARED)
|
||||
set(libtype SHARED)
|
||||
endif()
|
||||
add_library(backward ${libtype} backward.cpp)
|
||||
target_compile_definitions(backward PUBLIC ${BACKWARD_DEFINITIONS})
|
||||
target_include_directories(backward PUBLIC ${BACKWARD_INCLUDE_DIRS})
|
||||
|
||||
###############################################################################
|
||||
# TESTS
|
||||
###############################################################################
|
||||
|
@ -1,4 +1,4 @@
|
||||
Backward-cpp
|
||||
Backward-cpp [](http://www.conan.io/source/backward/0.0.0/Manu343726/testing) [](https://travis-ci.org/Manu343726/backward-cpp)
|
||||
============
|
||||
|
||||
Backward is a beautiful stack trace pretty printer for C++.
|
||||
|
57
conanfile.py
Normal file
57
conanfile.py
Normal file
@ -0,0 +1,57 @@
|
||||
from conans import ConanFile, CMake
|
||||
import os
|
||||
|
||||
class BackwardCpp(ConanFile):
|
||||
settings = 'os', 'compiler', 'build_type', 'arch'
|
||||
name = 'backward'
|
||||
url = 'https:77github.com/Manu343726/backward-cpp'
|
||||
license = 'MIT'
|
||||
version = '0.0.0'
|
||||
options = {
|
||||
'stack_walking_unwind': [True, False],
|
||||
'stack_walking_backtrace': [True, False],
|
||||
'stack_details_auto_detect': [True, False],
|
||||
'stack_details_backtrace_symbol': [True, False],
|
||||
'stack_details_dw': [True, False],
|
||||
'stack_details_bfd': [True, False],
|
||||
'shared': [True, False]
|
||||
}
|
||||
default_options = (
|
||||
'stack_walking_unwind=True',
|
||||
'stack_walking_backtrace=False',
|
||||
'stack_details_auto_detect=True',
|
||||
'stack_details_backtrace_symbol=False',
|
||||
'stack_details_dw=False',
|
||||
'stack_details_bfd=False',
|
||||
'shared=False'
|
||||
)
|
||||
exports = 'backward.cpp', 'backward.hpp', 'test/*', 'CMakeLists.txt', 'BackwardConfig.cmake'
|
||||
generators = 'cmake'
|
||||
|
||||
def cmake_option(self, option, prefix = ''):
|
||||
return '-D{}{}={}'.format(prefix, option.upper(), self.options[option])
|
||||
|
||||
def build(self):
|
||||
cmake = CMake(self.settings)
|
||||
|
||||
options = ''
|
||||
options += self.cmake_option('stack_walking_unwind')
|
||||
options += self.cmake_option('stack_walking_backtrace')
|
||||
options += self.cmake_option('stack_details_auto_detect')
|
||||
options += self.cmake_option('stack_details_backtrace_symbol')
|
||||
options += self.cmake_option('stack_details_dw')
|
||||
options += self.cmake_option('stack_details_bfd')
|
||||
options += self.cmake_option('shared', prefix = 'BACKWARD_')
|
||||
|
||||
self.run('cmake {} {} {} -DBACKWARD_TESTS=OFF'.format(self.conanfile_directory, cmake.command_line, options))
|
||||
self.run('cmake --build . {}'.format(cmake.build_config))
|
||||
|
||||
def package(self):
|
||||
self.copy('backward.hpp', os.path.join('include', 'backward'))
|
||||
self.copy('*.a', dst='lib')
|
||||
self.copy('*.so', dst='lib')
|
||||
self.copy('*.lib', dst='lib')
|
||||
self.copy('*.dll', dst='lib')
|
||||
|
||||
def package_info(self):
|
||||
self.cpp_info.libs = ['backward']
|
11
test_package/CMakeLists.txt
Normal file
11
test_package/CMakeLists.txt
Normal file
@ -0,0 +1,11 @@
|
||||
project(backward-package-test)
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
|
||||
include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
|
||||
include(${CONAN_CMAKE-UTILS_ROOT}/conan.cmake)
|
||||
conan_basic_setup()
|
||||
|
||||
add_conan_library(backward)
|
||||
|
||||
add_executable(example main.cpp)
|
||||
target_link_libraries(example PRIVATE backward-conan)
|
15
test_package/conanfile.py
Normal file
15
test_package/conanfile.py
Normal file
@ -0,0 +1,15 @@
|
||||
from conans import ConanFile, CMake
|
||||
import os
|
||||
|
||||
class TestBackward(ConanFile):
|
||||
settings = 'os', 'compiler', 'build_type', 'arch'
|
||||
requires = 'cmake-utils/0.0.0@Manu343726/testing', 'backward/0.0.0@Manu343726/testing'
|
||||
generators = 'cmake'
|
||||
|
||||
def build(self):
|
||||
cmake = CMake(self.settings)
|
||||
self.run('cmake {} {}'.format(self.conanfile_directory, cmake.command_line))
|
||||
self.run('cmake --build . {}'.format(cmake.build_config))
|
||||
|
||||
def test(self):
|
||||
self.run(os.path.join('.', 'bin', 'example'))
|
60
test_package/main.cpp
Normal file
60
test_package/main.cpp
Normal file
@ -0,0 +1,60 @@
|
||||
#include <backward/backward.hpp>
|
||||
#include <iostream>
|
||||
#include <stdexcept>
|
||||
#include <sstream>
|
||||
|
||||
using namespace backward;
|
||||
|
||||
class TracedException : public std::runtime_error
|
||||
{
|
||||
public:
|
||||
TracedException() :
|
||||
std::runtime_error(_get_trace())
|
||||
{}
|
||||
|
||||
private:
|
||||
std::string _get_trace()
|
||||
{
|
||||
std::ostringstream ss;
|
||||
|
||||
StackTrace stackTrace;
|
||||
TraceResolver resolver;
|
||||
stackTrace.load_here();
|
||||
resolver.load_stacktrace(stackTrace);
|
||||
|
||||
for(std::size_t i = 0; i < stackTrace.size(); ++i)
|
||||
{
|
||||
const ResolvedTrace trace = resolver.resolve(stackTrace[i]);
|
||||
|
||||
ss << "#" << i << " at " << trace.object_function << "\n";
|
||||
}
|
||||
|
||||
return ss.str();
|
||||
}
|
||||
};
|
||||
|
||||
void f(int i)
|
||||
{
|
||||
if(i >= 42)
|
||||
{
|
||||
throw TracedException();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "i=" << i << "\n";
|
||||
f(i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
try
|
||||
{
|
||||
f(0);
|
||||
} catch (const TracedException& ex)
|
||||
{
|
||||
std::cout << ex.what();
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user