Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Handling unresolved platform-dependent dependencies in biicode

I've tried to add biicode support to the the testing library Catch and had some problems with external dependencies related to Objective-C and Microsoft Foundation Classes (MFC).

The following is printed if running bii deps:

florianwolters/catch depends on:
       system:
          algorithm
          assert.h
          cmath
          cstddef
          cstdio
          cstring
          fstream
          iomanip
          iostream
          iterator
          limits
          map
          memory
          ostream
          set
          sstream
          stdbool.h
          stdexcept
          stdint.h
          stdlib.h
          streambuf
          string
          sys/time.h
          sys/types.h
          unistd.h
          vector
          windows.h
       unresolved:
          AfxWin.h
          Foundation/Foundation.h
          objc/runtime.h
          sys/sysctl.h

The three files sys/sysctl.h, objc/runtime.h and Foundation/Foundation.h are related to iOS development in Objective-C. The file AfxWin.h is part of the C++ library Microsoft Foundation Classes (MFC) from Microsoft. The biicode block I've created is florianwolters/catch (for further information).

So the question is: How-to deal with such dependencies? It does not make sense to upload source code owned by Apple or Microsoft (it may even be illegal) to bicode, though I haven't checked the licenses yet.

Is the "proper" or recommended way to simply ignore such unresolved issues?

EDIT 2015-01-11:

I've written a blog post about the process here. Please let me know, if I did any mistakes or if you have any suggestions for improving the workflow.

like image 707
Florian Wolters Avatar asked Jan 11 '15 10:01

Florian Wolters


1 Answers

Yes, at the moment it is the proper way. Biicode has pre-defined some system headers, the basic ones for Win and Nix platform, but not all of them. Typically OSX or other specific headers as MFC will not be found in biicode and then will be marked as unresolved.

This is not a problem at all. The same happens for your own libraries. If you wan to use any of your system-installed libraries, you can do very easily as usual (in CMake with Finders, or Imported targets). Biicode will mark included headers for that library as unresolved, which is the way to indicate that it is not managed by biicode. As long as those headers are present in your machine, everything will work fine.

like image 147
drodri Avatar answered Oct 30 '22 10:10

drodri