2016-07-20 77 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>