<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Everything is wrong &#187; C++</title>
	<atom:link href="http://everythingiswrong.free.fr/index.php/tag/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://everythingiswrong.free.fr</link>
	<description>Un blog dédié à l&#039;informatique en général</description>
	<lastBuildDate>Wed, 06 Oct 2021 21:20:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>C et C++ avec Maven : maven-nar-plugin</title>
		<link>http://everythingiswrong.free.fr/index.php/2011/07/14/c-et-c-avec-maven-maven-nar-plugin/</link>
		<comments>http://everythingiswrong.free.fr/index.php/2011/07/14/c-et-c-avec-maven-maven-nar-plugin/#comments</comments>
		<pubDate>Thu, 14 Jul 2011 20:48:17 +0000</pubDate>
		<dc:creator>Yan</dc:creator>
				<category><![CDATA[Maven]]></category>
		<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://yan.langlois.free.fr/wordpress/?p=1455</guid>
		<description><![CDATA[Utiliser Maven pour produire un livrable C ou C++.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">J&#8217;ai eu l&#8217;occasion de travailler sur plusieurs outils de build très différents comme MakeFile, Ant ou Maven. Chacun possède ses spécificités, ses avantages et ses inconvénients. Mais en règle générale, j&#8217;ai l&#8217;impression que les gens associent souvent un outil avec une technologie particulière : MakeFile pour C/C++, Ant ou Maven pour le Java. En réalité il est possible d&#8217;utiliser ces outils de build indépendamment des technologies utilisées.</p>
<p style="text-align: justify;">Je pense que Maven est l&#8217;outil le plus abouti sur lequel j&#8217;ai travaillé jusqu&#8217;à présent. Il y a peu de temps, je découvrais qu&#8217;il était possible de l&#8217;utiliser avec des projets Flex grâce à l&#8217;extension <a href="http://flexmojos.sonatype.org/index.html" target="_blank">FlexMojo</a>. Cela m&#8217;a redonner envie de trouver une solution simple pour utiliser Maven dans un projet C/C++.</p>
<p style="text-align: justify;">Jusqu&#8217;à aujourd&#8217;hui je ne connaissais que le plugin <a href="http://mojo.codehaus.org/maven-native/native-maven-plugin/index.html" target="_blank">Native</a> mais je l&#8217;ai toujours trouvé trop compliqué et au final, je n&#8217;ai jamais réussi à l&#8217;utiliser. C&#8217;est dans ce contexte d&#8217;échec que je viens de découvrir une extension C/C++ (et Fortran) qui fonctionne sans effort ou presque : <a href="http://duns.github.com/maven-nar-plugin/index.html" target="_blank">maven-nar-plugin</a>. Lorsque j&#8217;écris &#8220;presque&#8221; sans effort c&#8217;est tout simplement parce que les plugins nécessaires ne sont pas encore disponible sur le repository central.</p>
<p style="text-align: justify;">Voici la structure standard des répertoires de cette extension :</p>
<pre class="wp-caption" style="text-align: left;">/yourproject
    /src
        /main
            /java
            /resources
            /include
            /c++
            /c
            /fortran
        /test
            /java
            /resources
            /include
            /c++
            /c
            /fortran
</pre>
<p style="text-align: justify;">Pour installer maven-nar-plugin dans le répository local, il est nécessaire d&#8217;installer au préalable la librairie net.sf.antcontrib:cpptasks-parallel qui se trouve sur le repository GIT <a href="http://github.com/duns/cpptasks-parallel" target="_parent">http://github.com/duns/cpptasks-parallel</a>.</p>
<pre class="wp-caption" style="text-align: left;">git clone http://github.com/duns/cpptasks-parallel cpptasks-parallel</pre>
<p style="text-align: justify;">Puis</p>
<pre class="wp-caption" style="text-align: left;">cd cpptasks-parallel
mvn clean install</pre>
<p style="text-align: justify;">Il faut procéder de la même façon pour installer le plugin nar qui se trouve sur le repository GIT https://github.com/duns/maven-nar-plugin.git et l&#8217;archetype maven-archetype-nar-exec sur le repository https://github.com/duns/maven-archetype-nar-exec.git. Cet archetype va permettre de créer un projet exemple pour débuter rapidement grâce à la commande suivante :</p>
<pre class="wp-caption" style="text-align: left;">mvn archetype:generate -DarchetypeArtifactId=maven-archetype-nar-exec
        -DarchetypeVersion=1.0-SNAPSHOT
        -DgroupId=com.mycompany.app
        -DartifactId=my-cpp-app</pre>
<p style="text-align: justify;">Après l&#8217;exécution du build Maven sur ce nouveau projet (mvn install par exemple), l&#8217;exécutable se retrouve dans le répertoire target/nar/my-cpp-app-1.0-SNAPSHOT-*-executable/bin/*/my-cpp-app.</p>
]]></content:encoded>
			<wfw:commentRss>http://everythingiswrong.free.fr/index.php/2011/07/14/c-et-c-avec-maven-maven-nar-plugin/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
