如何配置NAR Maven项目

How to configure NAR Maven projects?

本文关键字:NAR Maven 项目 配置 何配置      更新时间:2023-10-16

我正在尝试Mavenize一个带有nar-maven的C++项目,在带有MSVC的Windows上。这是一个共享的图书馆
我已经在这个原型的示例项目中成功地测试了nar-maven

所以现在,我需要为一个更大的项目使用nar-maven插件。为了成功编译,我需要添加一些参数(包括,库,预处理器定义…)。以下是我当前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>

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

Executing 'C:Program Files (x86)Microsoft Visual Studio 12.0VCbinamd64cl' with arguments:
''
'/c'
'/nologo'
'/EHsc'
'/DNDEBUG'
'/MD'
'/GR'
'/FdD:NAR-projectssrttargetnarobjamd64-Windows-msvc'
'/DWIN32'
'/ID:NAR-projectssrttargetnarobjamd64-Windows-msvc'
'/ID:NAR-projectssrttargetnarobjamd64-Windows-msvc'
'/ID:NAR-projectssrtsrcmaininclude'
'/IC:Program Files (x86)Microsoft Visual Studio 12.0VCinclude'
'/IC:Program Files (x86)Microsoft Visual Studio 12.0VCatlmfcinclude'
'/IC:Program Files (x86)Windows Kits8.1Includeshared'
'/IC:Program Files (x86)Windows Kits8.1Includeum'
'/IC:Program Files (x86)Windows Kits8.1Includewinrt'
'/FoD:NAR-projectssrttargetnarobjamd64-Windows-msvclibraryExtern.1d1757c3.obj'
'include/interapp/libraryExtern.cpp'

不管怎样,我觉得我做错了什么,希望你能帮上忙。我需要找到一种方法来按照我的意愿配置我的项目。

我想好了。

我浏览了工作示例,以查看我的错误在哪里,在这个特定的示例,imagej启动器上,我们可以看到它在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>