【问题标题】:How to configure NAR Maven projects?如何配置 NAR Maven 项目?
【发布时间】:2016-07-21 16:05:52
【问题描述】:

我正在尝试使用 nar-maven 在 Windows 上使用 MSVC Mavenize 一个 C++ 项目。它是一个共享库。
我已经使用 archetype 在示例项目上成功测试了 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>

无论我在配置标签中添加什么参数(选项标签,包含标签...),maven 都不会考虑它。实际上,当我查找用于编译源文件的命令行(使用带有 mvn 的 -X 选项)时,不包括在 pom.xml 中添加的选项。
maven使用的命令行:

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'

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

【问题讨论】:

    标签: c++ maven pom.xml


    【解决方案1】:

    我想到了。

    我浏览了working examples 以查看我的错误在哪里,在这个特定的示例imagej-launcher 中,我们可以看到它在 c 标记 中添加了所有编译器配置:

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

    【讨论】:

      猜你喜欢
      • 2020-01-27
      • 1970-01-01
      • 2020-05-05
      • 1970-01-01
      • 2018-07-10
      • 1970-01-01
      • 2017-05-06
      • 2012-11-03
      • 2016-04-16
      相关资源
      最近更新 更多