Ошибка native-maven-plugin в компиляторе msvc "Командная строка слишком длинная".

Я пытаюсь собрать библиотеку cpp через maven, используя native-mvn-plugin. Тем не менее, во время связывания я сталкиваюсь с ошибкой, говорящей "Командная строка слишком длинная"

Что касается конфигурации, я имею это:

<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 ответ

Решение

Я бы очень не рекомендовал использовать родной плагин maven, у меня было много проблем с его настройкой, и я не знаю, поддерживается ли он, так как на главной странице написано, что он был последний раз опубликован 2011-03-09. Для решения проблемы создания библиотеки C++ с помощью maven я использовал плагин 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>

Таким образом, конфигурация обеспечит, чтобы проект отвечал как чистым, так и компилируемым целям. Вы можете пойти еще дальше и использовать плагин сборки, чтобы упаковать свою библиотеку и заставить ее установить библиотеку в локальном репозитории, чтобы ее можно было добавить в качестве зависимости в других проектах.

Другие вопросы по тегам