{"id":1156,"date":"2013-04-05T20:08:09","date_gmt":"2013-04-05T18:08:09","guid":{"rendered":"http:\/\/blog.rastersoft.com\/?p=1156"},"modified":"2013-04-05T20:08:09","modified_gmt":"2013-04-05T18:08:09","slug":"simplificando-vala-y-cmake","status":"publish","type":"post","link":"https:\/\/blog.rastersoft.com\/?p=1156","title":{"rendered":"Simplificando Vala y CMake"},"content":{"rendered":"<p>He estado tres semanas currando sin parar en mi <em>trabajo-que-paga-las-facturas<\/em>, y aunque no pude disfrutar ni findes ni vacaciones (<em>\u00a1Gracias, gracias, ministros que pusieron la fecha de entrega de los<a href=\"http:\/\/www.cdti.es\/index.asp?MP=7&amp;MS=577&amp;MN=3\" target=\"_blank\"> innterconecta<\/a> para justo despu\u00e9s de semana santa! \u00a1As\u00ed os salga un cardo en el sobaco!<\/em>), s\u00ed pude aprovechar algunos ratos muertos en casita para hacer un proyectillo personal: <a href=\"http:\/\/www.rastersoft.com\/programas\/autovala_es.html\" target=\"_blank\">Autovala<\/a>.<\/p>\n<p>La idea detr\u00e1s de Autovala surgi\u00f3 de casualidad de una lista de correo: un usuario se quejaba de que trabajar con <a href=\"http:\/\/www.cmake.org\/\" target=\"_blank\">CMake<\/a> era muy pesado, y que obligar a usarlo para los proyectos de la lista s\u00f3lo consegu\u00eda reducir la cantidad de desarrolladores que estar\u00edan dispuestos a colaborar. Y la verdad es que tiene algo de raz\u00f3n: empezar un proyecto nuevo con CMake es una tarea realmente aburrida, por la sencilla raz\u00f3n de que es muy repetitiva.<\/p>\n<p>Pero cuando una tarea es repetitiva&#8230; es ideal para que la haga una m\u00e1quina. As\u00ed que mi idea fue: \u00bfpor qu\u00e9 no dejar que sea el propio ordenador quien genere de manera autom\u00e1tica los ficheros CMake?<\/p>\n<p>Y esa es, precisamente, la idea detr\u00e1s de Autovala: generar de manera autom\u00e1tica todos los ficheros para CMake, en base a una serie de heur\u00edsticos. As\u00ed, por defecto, todos los ficheros <em>.vala<\/em> que haya en el directorio <em>src<\/em> (o subdirectorios dentro de \u00e9l) se compilar\u00e1n juntos para hacer un \u00fanico binario. Adem\u00e1s, a\u00f1adir\u00e1 autom\u00e1ticamente los paquetes necesarios para cada fichero, para lo que echa un vistazo a las directivas <em>using<\/em> del propio c\u00f3digo. Lo mismo para otros elementos: por ejemplo, para los iconos comprobar\u00e1 qu\u00e9 tama\u00f1o tienen y, en base a ello, decidir\u00e1 autom\u00e1ticamente en qu\u00e9 carpeta deben ir. Y m\u00e1s, mucho m\u00e1s.<\/p>\n<p>Por supuesto, es posible a\u00f1adir excepciones <em>a mano<\/em> para ajustar aquellas cosas en las que las reglas no funcionen bien; por ejemplo, si lo que queremos es generar una biblioteca, o si nuestro proyecto est\u00e1 compuesto de varios ejecutables. La ventaja en estos casos es que s\u00f3lo hay que hacer eso: indicarle que queremos que sean dos, tres, o los que sean, ejecutables y donde buscar las fuentes; autovala seguir\u00e1 haciendo el resto autom\u00e1ticamente (buscar paquetes necesarios, etc). Adem\u00e1s, los cambios que haga el usuario se recuerdan, por lo que si se a\u00f1aden o eliminan ficheros, basta con recrear el fichero de proyecto, y se tendr\u00e1n en cuenta todas las excepciones hechas antes.<\/p>\n<p>Obviamente Autovala no sirve para todos los proyectos, pero s\u00ed para la gran mayor\u00eda, que es lo interesante.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>He estado tres semanas currando sin parar en mi trabajo-que-paga-las-facturas, y aunque no pude disfrutar ni findes ni vacaciones (\u00a1Gracias, gracias, ministros que pusieron la fecha de entrega de los innterconecta para justo despu\u00e9s de semana santa! \u00a1As\u00ed os salga un cardo en el sobaco!), s\u00ed pude aprovechar algunos ratos muertos en casita para hacer &hellip; <a href=\"https:\/\/blog.rastersoft.com\/?p=1156\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Simplificando Vala y CMake<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3,5],"tags":[],"class_list":["post-1156","post","type-post","status-publish","format-standard","hentry","category-nueva-version","category-programacion"],"_links":{"self":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1156"}],"version-history":[{"count":0,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=\/wp\/v2\/posts\/1156\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1156"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1156"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.rastersoft.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}