0

非常に単純な C++ Maven NAR プロジェクトがあり、CLion のターミナルからコンパイルしたいと考えています。これは私のプロジェクトの pom.xml です:

<?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;
}

そして、このディレクトリ構造:

ディレクトリ構造 C/C++ Maven NAR プロジェクト

「開発者コマンドプロンプト」を使えばコンパイルできます。

[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]
...
4

2 に答える 2

1

バージョン番号を推測できません: ->

NAR は、MSVS のバージョンを判別し、そのバージョンの正しい方法で引数を渡すことができるように、link.exeand/or cl.exe(私の記憶が正しければ) のようなフラグを使用してシステム コールを作成しようとします。/versionコマンド ライン構文に関しては、異なるバージョンの MSVS には後方互換性がないため、これが必要です。

ただし、問題の実行可能ファイルが見つからない場合、コマンドは stdout (再び IIRC) に何も出力せず、解析できないバージョン出力用の空の文字列を生成します。

このエラー メッセージがより明確になるように改善することは確かに素晴らしいことです。mvn -Xそれまでの間、デバッグ モードを呼び出すためにwith を実行してみてください。これにより、NAR からのより多くの出力を含め、Maven からより多くの出力が出力されます。

とにかく、問題の核心は、CLion CLI 環境 (つまり、どの変数が何に設定されているか) が開発者コマンド プロンプトの CLI 環境と異なる必要があるということです。setそれぞれに変数をリストしてから、出力を比較してみることができます。

これを修正するには、おそらく次のいずれかを行う必要があります。A) CLion 環境で何かを微調整する。または B) NAR プラグインにパッチを適用して、CLion および/または MSVS 構成について教えます。

(B)の方は是非PRしてみてください!いずれにせよ、CLion に関する情報をNAR wikiに追加することは素晴らしいことです。

于 2016-01-03T15:32:17.800 に答える
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 を使用しており、開発者コマンド プロンプトのプロパティからこれを取得しました。これと同じ手順を他のバージョンの Visual Studio でも使用できると思います。

vs2012 の開発者コマンド プロンプトのプロパティ

于 2016-01-07T14:50:57.673 に答える