Ошибка 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>
Таким образом, конфигурация обеспечит, чтобы проект отвечал как чистым, так и компилируемым целям. Вы можете пойти еще дальше и использовать плагин сборки, чтобы упаковать свою библиотеку и заставить ее установить библиотеку в локальном репозитории, чтобы ее можно было добавить в качестве зависимости в других проектах.