Handling of C++ Dependencies (Cross Platform) -


i have impression question asked hundred times, never answered.

i working on smallish project, @ point should released big 3 pc platforms (windows, mac & gnu/linux), locking technology bad idea. luckily unfortunately, now, during development, target 32-bit windows.

on code level, cross platform development relatively easy, if pick right libraries. building software on multiple platforms relatively straight forward, looking using either gyp or cmake.

the problem dependencies. build project need: sdl, sdl_image, sdl_ttf, iconv, libxml2, libxmlmm, sigc++, wxwidgets, glew, bullet, openalsoft , maybe more added later.

so far have found 3 options:

  1. check in sources , build them part of project
  2. check in binaries
  3. manage dependencies outside of source tree

the first seems overkill, since need maintain fork of library , custom build system.

the second option sounds thing when target 1 or maybe 2 platforms. if count different targets, including 32/64 bit variants, starts balloon barely manageable.

the third option depends on environment. if let developers handle dependencies manually never sleep @ nigh. getting each , every dependency built , ready used barely impossible. not mention can't ensure each developer uses correct version.

if @ other languages, solve problem differently. systems npm, marvin or phing, maintain configuration file in project , tools fetch dependencies needed.

i thinking building dependencies centrally, packaging them zip/deb/rpm/whatever packages , putting them repository. each developer copy dependencies platform repository (but no check them in) before building. done preferably automatically pre-build step.

i don't want additional build system. have looked around , thing remotely want may ivy. either missing or ivy totally on engineering problem. simple exist solve problem?

i inches of building own.

i recommend against building own.

we use ant/ivy/hudson automate our cross platform (windows , linux) builds. use nexus (maven) our artifact repository contains platform specific builds of our 3rd party libraries our own application. hudson integrates cleanly perforce (our software repository).

we in process of creating separate 32-bit , 64-bit artifacts of , ant/ivy make easier.

it has worked out great us.


Comments

Popular posts from this blog

linux - Does gcc have any options to add version info in ELF binary file? -

android - send complex objects as post php java -

charts - What graph/dashboard product is facebook using in Dashboard: PUE & WUE -