mirror of
https://github.com/QuasarApp/backward-cpp.git
synced 2025-05-04 22:09: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*/
|
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"
|
- 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
|
- 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}
|
- export PATH=${DEPS_DIR}/cmake/bin:${PATH}
|
||||||
|
- pip install --user conan && export PATH=$PATH:$HOME/.local/bin
|
||||||
- cd ${TRAVIS_BUILD_DIR}
|
- cd ${TRAVIS_BUILD_DIR}
|
||||||
- mkdir build && cd build
|
- mkdir build && cd build
|
||||||
- cmake .. -DBACKWARD_TESTS=ON
|
- cmake .. -DBACKWARD_TESTS=ON
|
||||||
@ -21,3 +22,4 @@ install:
|
|||||||
|
|
||||||
script:
|
script:
|
||||||
- valgrind ctest .. --verbose
|
- 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")
|
"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
|
# 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++.
|
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