2015-12-31 10 views
0

У меня очень простой проект C++ Maven NAR, и я хочу скомпилировать его с терминала CLION. Это pom.xml моего проекта:Проект C/C++ Maven NAR от терминала CLION с использованием компилятора Visual C++ (msvc): не удается вывести номер версии

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>me.app.sample</groupId> 
    <artifactId>app-sample</artifactId> 
    <version>1.0</version> 
    <packaging>nar</packaging> 

    <build> 
     <defaultGoal>integration-test</defaultGoal> 
     <plugins> 
      <plugin> 
       <groupId>com.github.maven-nar</groupId> 
       <artifactId>nar-maven-plugin</artifactId> 
       <version>3.0.0</version> 
       <extensions>true</extensions> 
       <configuration> 
        <libraries> 
         <library> 
          <type>executable</type> 
          <run>true</run> 
         </library> 
        </libraries> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

Простой main.cpp:

#include <iostream> 
using namespace std; 
int main() { 
    cout << "Hello world" << endl; 
    return 0; 
} 

И эта структура каталогов:

directory structure C/C++ Maven NAR project

я могу скомпилировать его, если я использую «Командная строка разработчика».

[INFO] ----------------------------------------- 
[INFO] BUILD SUCCESS 
[INFO] ----------------------------------------- 

Проблема возникает при использовании CLion в терминальную (ALT + F12) для создания проекта:

E:\...app-sample>mvn compile 
... 
[INFO] Using AOL: x86-Windows-msvc 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
... 
[ERROR] Failed to execute goal com.github.maven-nar:nar-maven-plugin:3.0.0:nar-validate (default-nar-validate) on project app-sample: Cannot deduce version number from: -> [Help 1] 
... 

ответ

1

Не удается вывести номер версии из: ->

NAR пытается сделайте системный вызов link.exe и/или cl.exe (если я правильно помню) с флагом, как /version, так что он может определить версию MSVS, s o что он может передать аргументы правильным образом для этой версии. Это необходимо, потому что разные версии MSVS не поддерживают обратную совместимость, когда дело доходит до синтаксиса командной строки.

Однако, если искомый исполняемый файл не найден, команда не выплескивает ничего на stdout (опять же, IIRC), создавая пустую строку для вывода версии, которая не может быть проанализирована.

Было бы неплохо улучшить это сообщение об ошибке, чтобы быть более ясным. Тем временем вы можете попробовать запустить с mvn -X, чтобы вызвать режим отладки, который выдает лот больше выходных данных от Maven, в том числе больше от NAR.

В любом случае суть проблемы заключается в том, что среда CLI CLI (то есть: какие переменные установлены для чего) должна отличаться от среды CLI командной строки разработчика. Вы можете попробовать использовать set для перечисления переменных в каждом, а затем разделить выходы.

Чтобы исправить это, вам, вероятно, понадобится либо: A) настроить что-то в своей среде CLion; или B) научите плагин NAR о CLion и/или вашей конфигурации MSVS, исправив его.

Если вы идете на маршрут (B), не стесняйтесь подавать PR! И в любом случае добавить что-то о CLion к NAR wiki было бы здорово.

1

Похоже, кому-то не нравится Редактировать Я положил в @ctrueden ответ https://stackoverflow.com/review/suggested-edits/10770206, поэтому отправлю ответ здесь. Сначала я рекомендую прочитать ответ @ctrueden. Это продолжение его ответа.

Для (A) (настроить что-то в среде CLion) вам нужно будет перейти на панель настроек и выбрать «Инструменты»> «Терминал», теперь вам нужно будет настроить путь к оболочке следующим образом (это будет работать для Visual Studio 2012):

cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat" 

Я использую Visual Studio 2012 и я получил это от свойствах Developer Command Prompt. Я предполагаю, что этот же шаг можно использовать с другими версиями Visual Studio.

properties for developer command prompt for vs2012