Building Google Breakpad on Mac OS X

前端 未结 2 1681
挽巷
挽巷 2021-02-09 02:16

I am attempting to build Google Breakpad for Mac OS X as a part of porting an application, based on the trunk revision 782.

The Breakpad wiki specifies that one should b

相关标签:
2条回答
  • 2021-02-09 02:49

    There is no solution in the Breakpad source for this, unfortunately. The XCode projects simply build the Breakpad framework, as that's the more-supported client API. You can build the code with your own set of Makefiles or whatever build setup you desire the same way Firefox does by looking at the set of Mozilla makefiles:

    http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/common/Makefile.in

    http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/common/mac/Makefile.in

    http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/Makefile.in

    http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/mac/handler/Makefile.in

    http://mxr.mozilla.org/mozilla-central/source/toolkit/crashreporter/google-breakpad/src/client/mac/crash_generation/Makefile.in

    and gathering the set of files referenced in CSRCS/CPPSRCS/CMSRCS/CMMSRCS, and building all of those.

    You might also file a bug in the Breakpad issue tracker to ask that the XCode project build this static library as well. It would not be a difficult patch.

    0 讨论(0)
  • 2021-02-09 02:53

    This might not be helpful in your case, but I've found this to work for a project I'm working on that needs to work on both Linux and OSX. On Linux we use the "normal" autotools way of doing things; on OSX we invoke xcodebuild to create Breakpad.framework and then link against that.

    Here's the relevant portion of the CMakeLists.txt file (for CMake see here):

    IF(LINUX)
      add_custom_target(
        GOOGLE_BREAKPAD_MAKEFILE
        COMMAND cd ../google-breakpad/ && ([ -e Makefile ] || (autoreconf && bash configure))
      )
      add_custom_target(
        GOOGLE_BREAKPAD
        COMMAND cd ../google-breakpad/ && $(MAKE)
      )
      add_dependencies(GOOGLE_BREAKPAD GOOGLE_BREAKPAD_MAKEFILE)
    ENDIF()
    
    IF(APPLE)
      add_custom_target(
        GOOGLE_BREAKPAD
        COMMAND cd ../google-breakpad/src/client/mac/ && xcodebuild -sdk macosx
      )
    ENDIF()
    

    If your application is built with clang -stdlib=libc++ (which is pretty normal if you make heavy use of C++11), you should append the phrase GCC_VERSION=com.apple.compilers.llvm.clang.1_0 OTHER_CFLAGS=-stdlib=libc++ OTHER_LDFLAGS=-stdlib=libc++ to the end of the xcodebuild line. This will force xcodebuild to do the right thing.

    If your application is built with GCC and GNU libstdc++, you don't need to add anything to the xcodebuild line.

    0 讨论(0)
提交回复
热议问题