[英]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;
}
而這個目錄結構:
如果使用“開發人員命令提示符”,則可以編譯它。
[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一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.