簡體   English   中英

使用Visual C ++編譯器(msvc)從CLion終端構建C / C ++ Maven NAR項目:無法推斷版本號

[英]Building C/C++ Maven NAR project from CLion terminal using Visual C++ compiler (msvc): Cannot deduce version number

我有一個非常簡單的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]
...

無法從以下位置推斷版本號:->

NAR嘗試使用/version類的標志對link.exe和/或cl.exe (如果我沒有記錯的話)進行系統調用,以便它可以確定MSVS的版本,從而可以以正確的方式傳遞參數。對於該版本。 這是必要的,因為涉及命令行語法時,不同版本的MSVS不向后兼容。

但是,如果找不到相關的可執行文件,則該命令不會在stdout上繼續輸出任何內容(再次是IIRC),從而為版本輸出生成一個空字符串,該字符串無法解析。

改進此錯誤消息以使其更加清晰無疑是一件不錯的事情。 在此期間,您可以嘗試與運行mvn -X調用調試模式,這會發出Maven的很多更多的輸出,包括NAR一堆了。

無論如何,問題的症結在於CLion CLI環境(即:哪些變量設置為什么)必須與Developer Command Prompt的CLI環境不同。 您可以嘗試使用set列出每個變量,然后比較輸出。

要解決此問題,您可能需要:A)在您的CLion環境中進行調整; 或B)通過打補丁向NAR插件介紹CLion和/或您的MSVS配置。

如果您選擇(B)的路線,請隨時提交PR! 無論哪種方式,將有關CLion的內容添加到NAR Wiki都是很棒的。

好像有人不喜歡我在@ctrueden答案https://stackoverflow.com/review/suggested-edits/10770206中放入的Edit,所以我將答案發布在這里。 首先,我建議閱讀@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的Properties中獲得了它。 我假設同一步驟可以與其他版本的Visual Studio一起使用。

vs2012開發人員命令提示符的屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM