1

我正在尝试使用 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>

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

4

1 回答 1

2

我真的不鼓励使用 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>

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

于 2013-07-16T20:14:01.520 回答