2016-07-20 73 views
0

我正在尝试Mavenize一个C++项目与nar-maven,在Windows上与MSVC。这是一个共享库。
我已经用这个archetype成功测试过示例项目的nar-maven。
如何配置NAR Maven项目?

所以现在,我需要使用nar-maven-plugin来做更大的项目。为了成功编译,我需要添加一些参数(包括,库,预处理器定义...)。这就是我被卡住的地方。这是我目前的POM文件的样本:

<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> 

无论参数我想补充(选项标签,包括标签......)配置标签内,它不是在账户被行家所。事实上,当我查找用于编译源文件的命令行时(在mvn中使用-X选项),不包括在pom.xml中添加的选项。
被行家所使用的命令行:

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' 

无论如何,我认为我做错了什么,我希望你能有所帮助。我需要找到一种方法来根据需要配置我的项目。

回答

1

我想通了。

我为了浏览的working examples上看到我的错误是,在此特定的例子,imagej-launcher,我们可以看到,它增加了一个ç标签里面所有的编译器配置:

  <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> 
      ... 

所以我刚刚添加了一个cpp标签,并在其中放入我的选项,现在它可以正常工作:

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