11

I'm trying to find a tool like Maven (standardized build & packaging, artifact repo, etc) that supports more than Java (and C/C++), specifically Python and .NET (C#) as well. Especially good dependency management is desired.

We're running a mixed shop of languages at our place, and the current homegrown python-based "über-buildsystem" should probably go away. Note that it doesn't attempt to do detailed builds, just handles dependencies between modules/projects, downloads compiled artifacts (a few hundred megs per library in the C++ case) and invokes msbuild/easy_install/etc on the existing .sln/.vcproj/etc files to get the real build done.

It works, but mostly because I built it and know what it can and cannot do, and I extend it when I need new stuff. It's not really helping the other developers getting in to it, and I feel more and more that we shouldn't focus on that. (Even though it's not that much work and there doesn't seem to be a compelling alternative.)

So:

  • Python's setuptools only seem to be for Python (and some c++ -> .pyd compilation).
  • Maven mostly does Java, and some C/C++, mostly for JNI.
  • For C/C++ there is... nothing? (qmake/cmake for building)
  • For .NET there are some stuffs, but do they work well outside Visual Studio and the MSFT toolchain?

Building another Maven (but with more flexible support) on top of Ant (using Beanshell mostly) is something I've done already. The current Python-stuff is an offshoot of that.

Update:

Ant+Ivy would require building quite a bit on top, as I indicated above, but it's probably a better foundation than what we have today, since we get more build tasks and an artifact repo out of the box. (See Maven Like dependency management for C++)

All help warmly appreciated!

Community
  • 1
  • 1
Macke
  • 24,812
  • 7
  • 82
  • 118
  • This is a really good question. I am looking for such tools that can utilize a artifact repository, too. Do you have some updates now? – Steinway Wu Oct 22 '12 at 16:36
  • @SteinwayWu: Nope. I think the best way is Ant/Ivy, since you can make your own tasks there and use Ivy as a generic artifact mgmt system. We're still running my python system with a static http-served dir for artifact repo, since we only store (compiled from C++) third-party libs there at the moment. – Macke Oct 23 '12 at 19:17
  • I've found that the latest CMake can support something like a local repository. It is supported through CMake/CPack and their Import/Export functionality. You may want to check them out at cmake.org for the latest information. I am going to try it for my ATS project's building. – Steinway Wu Oct 25 '12 at 15:21
  • @SteinwayWu: Has it worked out for you? Could you post an answer if so? – Macke Jan 07 '13 at 09:49

1 Answers1

1

Try waf.

Holger Hoffstätte
  • 1,918
  • 1
  • 13
  • 10