msvc编译器的native-maven-plugin错误“命令行太长了。”

时间:2013-07-15 10:58:52

标签: maven visual-c++ command-line linker native-maven-plugin

我正在尝试使用native-mvn-plugin通过maven构建一个cpp lib。但是,在链接部分,我遇到一个错误,说“命令行太长”

至于配置,我有这个:

<envFactoryName>org.codehaus.mojo.natives.msvc.MSVC2008x86EnvFactory</envFactoryName>
<compilerProvider>msvc</compilerProvider>
<compilerStartOptions>
    <compilerStartOption> /GL /EHsc </compilerStartOption>
</compilerStartOptions>

对于linkerStartOptions,我有这个:

<linkerStartOptions>
    <linkerStartOption>-g -Fo -lstdc</linkerStartOption>
</linkerStartOptions>

如果有人可以帮助我,我会很高兴。

1 个答案:

答案 0 :(得分:1)

我真的不鼓励使用maven本机插件,我在配置它时遇到了很多麻烦,而且我不知道它是否被维护,因为主页上说它最后发布于2011-03-09。我用maven来处理构建C ++库的问题是使用maven-exec插件。我通过调用:

加载msbuild工具
"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat"
从命令行

。之后,msbuild将在您的范围内提供。

这些是我的pom文件的内容:

<plugin>
    <artifactId>exec-maven-plugin</artifactId>
    <configuration>
        <executable>msbuild</executable>
        <sourceRoot>${basedir}/Library/</sourceRoot>
    </configuration>
    <executions>
        <execution>
            <id>clean</id>
            <phase>clean</phase>
            <configuration>
                <arguments>
                    <argument>${basedir}/Library/Library.vcxproj</argument>
                    <argument>/p:Configuration=Release</argument>
                    <argument>/p:Platform=x64</argument>
                    <argument>/t:Clean</argument>
                </arguments>
            </configuration>
            <goals>
                <goal>exec</goal>
                </goals>
            </execution>
        <execution>
            <id>build</id>
            <phase>compile</phase>
            <configuration>
                <arguments>
                    <argument>${basedir}/Library/Library.vcxproj</argument>
                    <argument>/p:Configuration=Release</argument>
                    <argument>/p:Platform=x64</argument>
                    <argument>/t:Build</argument>
                </arguments>
            </configuration>
            <goals>
                <goal>exec</goal>
            </goals>
        </execution>
    </executions>
</plugin>

这样,配置将使项目响应清理和编译目标。您可以更进一步,使用程序集插件来打包库,并使其在本地存储库中安装库,以便可以将其作为依赖项添加到其他项目中。