2016-07-20 10 views
0

Ich versuche Mavenize ein C++ Projekt mit nar-Maven, auf Windows mit MSVC. Es ist eine gemeinsame Bibliothek.
Ich habe bereits erfolgreich Nar-Maven auf Beispielprojekte mit dieser archetype getestet.
Wie konfiguriert man NAR Maven Projekte?

Also jetzt muss ich die nar-maven-plugin für ein größeres Projekt verwenden. Um erfolgreich zu kompilieren, muss ich einige Argumente hinzufügen (includes, libs, Präprozessordefinitionen ...). Und hier stecke ich fest. Hier ist ein Beispiel meiner aktuellen pom-Datei:

<project> 

    ... 

    <properties> 
    <skipTests>true</skipTests> 
    </properties> 

    <build> 
    <defaultGoal>integration-test</defaultGoal> 
    <plugins> 
     <plugin> 
     <groupId>com.github.maven-nar</groupId> 
     <artifactId>nar-maven-plugin</artifactId> 
     <version>3.5.0</version> 
     <extensions>true</extensions> 
     <configuration> 
      <options> 
       <option>/D_WINDOWS</option> 
       <option>/D_WINDLL</option> 
       <option>...</option> 
      </options> 
      <libraries> 
      <library> 
       <type>shared</type> 
      </library> 
      </libraries> 
      <tests> 
      <test> 
       <name>libblawin</name> 
       <link>shared</link> 
      </test> 
      </tests> 

     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
    ... 
    </dependencies> 
</project> 

Was auch immer Parameter mich hinzufügen (Optionen-Tag enthält tag ...) in dem Konfigurations-Tag, wird es nicht in Rechnung von Maven gemacht. Wenn ich nach der Befehlszeile suche, die zum Kompilieren einer Quelldatei verwendet wird (indem die Option -X mit mvn verwendet wird), sind die in der Datei pom.xml hinzugefügten Optionen nicht enthalten.
Die Befehlszeile von Maven verwendet:

Executing 'C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64\cl' with arguments: 
'' 
'/c' 
'/nologo' 
'/EHsc' 
'/DNDEBUG' 
'/MD' 
'/GR' 
'/FdD:\NAR-projects\srt\target\nar\obj\amd64-Windows-msvc\' 
'/DWIN32' 
'/ID:\NAR-projects\srt\target\nar\obj\amd64-Windows-msvc' 
'/ID:\NAR-projects\srt\target\nar\obj\amd64-Windows-msvc' 
'/ID:\NAR-projects\srt\src\main\include' 
'/IC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include' 
'/IC:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\atlmfc\include' 
'/IC:\Program Files (x86)\Windows Kits\8.1\Include\shared' 
'/IC:\Program Files (x86)\Windows Kits\8.1\Include\um' 
'/IC:\Program Files (x86)\Windows Kits\8.1\Include\winrt' 
'/FoD:\NAR-projects\srt\target\nar\obj\amd64-Windows-msvc\libraryExtern.1d1757c3.obj' 
'include/interapp/libraryExtern.cpp' 

Wie dem auch sei, ich denke, dass ich etwas falsch mache, und ich hoffe, Sie helfen können. Ich muss einen Weg finden, um mein Projekt so zu konfigurieren, wie ich es möchte.

Antwort

1

Ich dachte.

ich durchsucht die working examples, um meinen Fehler zu sehen, wo war, und auf diesem speziellen Beispiel imagej-launcher, können wir sehen, dass es alle Compiler-Konfiguration in einem c-Tag ergänzt: So

  <configuration> 
       <c> 
        <name>gcc</name> 
        <includes> 
         <include>**/*.c</include> 
        </includes> 
        <options> 
          <option>-DLAUNCHER_VERSION="${project.version}"</option> 
          <option>-DBUILD_NUMBER="${buildNumber}"</option> 
          <option>-I${JAVA_HOME}/include</option> 
          <option>${java.os.include}</option> 
          <option>${stack.protector.option}</option> 
          <option>${architecture.option}</option> 
          <option>${subsystem.option}</option> 
          <option>${debug.option}</option> 
        </options> 
       </c> 
      ... 

Ich habe gerade ein cpp Tag hinzugefügt und meine Optionen darin, und jetzt funktioniert es gut:

<configuration> 
     <cpp> 
      <options> 
       <option>/D_WINDOWS</option> 
       <option>/D_WINDLL</option> 
       <option>...</option> 
      </options> 
     </cpp> 
Verwandte Themen