6

I have projects in C++, Java and Python. Projects in C++ export SWIG interfaces so they can be used by Java and Python projects.

My question is: what building mechanism can I use to manage dependencies and build these projects?

I have used SCons and GYP. They are fairly easy to use and allow plugins (code-generators, compilers, packers). I'd like to know whether there are alternatives, in particular with native support for C++, Java and Python.

I develop in Linux platform, but I'd like to be able to build in mac and win platforms as well.

Igor Gatis
  • 4,648
  • 10
  • 43
  • 66

5 Answers5

9

CMake

I use and prefer it for my projects.

There's also Rake (comes with Ruby, but can be used for anything), which I regard rather highly.

greyfade
  • 24,948
  • 7
  • 64
  • 80
7

One promising alternative is waf:

Others:

Not exactly but very relevant:

Pylinux
  • 11,278
  • 4
  • 60
  • 67
pyfunc
  • 65,343
  • 15
  • 148
  • 136
4

I tried to do a Java / C++ / C++ To Java swig / (+ Protocol buffers) project in CMAKE and it was horrible! In such a case the problem with Cmake is, that the scripting language is extremely limited. I switched to Scons and everything got much easier.

Geli
  • 503
  • 1
  • 4
  • 8
1

For Java and C++ projects you can take a look into Maven + Maven-nar-plugin but for Python i really don't know the best. May be other tools like CMake would fit better.

khmarbaise
  • 92,914
  • 28
  • 189
  • 235
1

In Java world ant is "lingua franca" for build systems. Ant supports a C++ task via ant-contrib - so you can compile your C++ code. With Ant's exec task you can still run swig on C++ code in order to get the wrappers. Then standard tasks as javac/jar can be used for java application build.

Daniel Voina
  • 3,185
  • 1
  • 27
  • 32