I too have developed a C++/C Ant/Ivy cross-platform (x86, and assorted arm) development environment.
Like Maurer, we created ant scripts that all of a common interface of build/test/install/publish targets.. For projects that we control, we use that interface to drive CMake.. Since all our projects use CMake, I was able to create 'helper ant files' to handle most of the heavy lifting, so that a build.xml file for a project is 4 lines long. Third party stuff is somewhat chaotic, since everything wants to build differently, but we try to maintain that ant interface as best we can. One thing that needs to be considered is what files get stored in Ivy.. I didn't want the maintenance overhead of keeping track of all the header files that are added, so in our 'install', we always install to a particular directory (<project>/installed_files). Then in the publish, I zip up that entire directory, and that is my artifact. I have a trigger on the download of a dependency to unzip the files. (into <project>/dependencies). This allows us to write the CMake build scripts to always look into ./dependencies for the needed files. Since we need to be cross platform, I added a "platform" in the dependency info: <dependency name="libManager" rev="trunk" e:platform="${platform}" /> That platform gets injected into my repo path: <sftp name="shared" user="..." userPassword="..." host="..." checksums="sha1,md5" checkmodified="true" changingPattern="*"> <ivy pattern="ivy_shared_repo/[organisation]/[module]/[platform]/ivys/[revision]/ivy.xml"/> <artifact pattern="ivy_shared_repo/[organisation]/[module]/[platform]/[type]s/[revision]/[artifact].[ext]"/> </sftp> </resolvers> When we build or publish, we pass what platform it is: ant -Dplatform=arm-debug Now we can have pre-compiled dependencies, for multiple platforms. Its worked fairly well, though some complain that to switch between platforms is somewhat of a pain (have to clear out the build, and rebuild everything, or use a separate directory).. But thats far better than the previous system we had (none).. Now if I can get all the groups to get rid of their svn:externals (being used for pretty much the same thing, trying to assemble multiple projects into a single one), my life would be much easier. --John On 12/12/2012 01:16 AM, Maurer Philipp wrote: We've been extensively using Ant/ivy in our C++ environment. The main reason was actually ivy to have a (transitive) dependency manager, but also to have the same "build/install/run/test" interface to all our projects. The idea is pretty simple: We have a company-wide repository of common libraries (C++source and pre-compiled) in different versions that can be used in other projects. When building a project, the correct (in term of version) dependee modules are downloaded from the repository, extracted and locally build (with the normal build environment e.g. MSVC, make). We also implemented an auto-environment feature that creates suitable environment variables pointing to the include / import library paths of the locally built common modules. But be warned: We had to extensively use Python scripts to enhance Ant/Ivy to make it all work and it cost many man-months. In the end, we use ant as a standardized interface to our build management system, use ivy for dependency management and leave the rest to python scripts. But once set up, it works *really* good. -----Ursprüngliche Nachricht----- Von: Marcel Overdijk [mailto:marceloverd...@gmail.com] Gesendet: Donnerstag, 6. Dezember 2012 17:15 An: ivy-user@ant.apache.org Betreff: Ivy in C/C++ environment I wonder if somebody has some pointers for using Ivy in a C/C++ environment. a) how is dependency management done (e.g. using custom resolver?) b) how is building done (based on on de Ivy dependencies) I'm not looking for a complete solution, just wat to start a discussion about possibilities or perhaps best practices from people already having this set up. Unfortunately I can't find and information in the docs. Ivy is especially interesting as it is nog tight to Java dependency management. -- View this message in context: http://old.nabble.com/Ivy-in-C-C%2B%2B-environment-tp34767076p34767076.html Sent from the ivy-user mailing list archive at Nabble.com. -- --John