{"id":320,"date":"2006-08-27T16:18:58","date_gmt":"2006-08-27T23:18:58","guid":{"rendered":"http:\/\/multimedia.cx\/eggs\/alternate-builders\/"},"modified":"2006-08-27T16:18:58","modified_gmt":"2006-08-27T23:18:58","slug":"alternate-builders","status":"publish","type":"post","link":"https:\/\/multimedia.cx\/eggs\/alternate-builders\/","title":{"rendered":"Evaluating Alternate Build Systems"},"content":{"rendered":"<p>Even though I am on record as <a href=\"http:\/\/multimedia.cx\/eggs\/i-heart-autotools\/\">expressing devotion to the Autotools suite<\/a>, I am not averse to evaluating alternatives. Mostly, I&#8217;m interested in a competent build system that can take care of the difficult and tedious stuff pertaining to a build such as dependencies and configuration. I acknowledge that Autotools embody a fair amount of complexity and arcana. The two top contenders to plausibly compete for Autotools&#8217; title appear to be <a href=\"http:\/\/www.scons.org\/\">SCons<\/a> and <a href=\"http:\/\/www.cmake.org\/\">CMake<\/a>.<\/p>\n<p><center><br \/>\n<img decoding=\"async\" src=\"\/eggs\/images\/Nuvola_apps_kalzium.png\" alt=\"Components\" \/><br \/>\n<\/center><\/p>\n<p>A good baseline for evaluating the capabilities of an alternative is to find a limitation of your current solution and then figure out if the alternative can do that <em>AND<\/em> everything that the current solution can do. For example, on one of my software projects, I really appreciate that the current Autotools-based solution can:<\/p>\n<ul>\n<li>automatically keep track of dependencies<\/li>\n<li>manage multiple build targets<\/li>\n<li>create multiple build configurations in separate directories, working from the same source tree<\/li>\n<\/ul>\n<p>But now I need some very fine tweaking of certain build settings, such as being able to static link a particular version of libstdc++ to a binary. I don&#8217;t know if any of the common build systems support this without some very serious hacking.<\/p>\n<p>Here is a blog post from someone who has struggled with the very same issues and was able to solve the problem with a hand-crafted Makefile: <a href=\"http:\/\/www.upl.cs.wisc.edu\/~psilord\/blog\/2.html\">G Plus Plus Minus One<\/a>. I have managed to achieve the correct results from the command line. But trying to hack Makefile.am to do the same always ends up with a roundabout veto by the Autotools (i.e., the tools fall back on their preferred method of linking).<\/p>\n<p>Of course, it would be really sweet if I could modify my existing autotools setup to do what I need. I am still diligently researching this possibility. I certainly do not wish to re-tool the whole build system into a hand-crafted, manually maintained Makefile.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Even though I am on record as expressing devotion to the Autotools suite, I am not averse to evaluating alternatives. Mostly, I&#8217;m interested in a competent build system that can take care of the difficult and tedious stuff pertaining to a build such as dependencies and configuration. I acknowledge that Autotools embody a fair amount [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28],"tags":[],"class_list":["post-320","post","type-post","status-publish","format-standard","hentry","category-programming"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/320","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/comments?post=320"}],"version-history":[{"count":0,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/posts\/320\/revisions"}],"wp:attachment":[{"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/media?parent=320"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/categories?post=320"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multimedia.cx\/eggs\/wp-json\/wp\/v2\/tags?post=320"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}