国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

VS2022 CMake報錯解決小結(jié)

這篇具有很好參考價值的文章主要介紹了VS2022 CMake報錯解決小結(jié)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

一、問題背景

二、問題分析

三、問題解決


一、問題背景

? ? ? ?VS2022中能夠跨平臺的工程類型就是CMake項目,一套代碼能跨windows/Linux/Mac多種操作系統(tǒng)。而實際使用時,發(fā)現(xiàn)相關(guān)資料比較少,需要摸索一下。

VS2022 CMake報錯解決小結(jié),visual studio,c++,linux,cmake

?碰到的問題簡述:

VS2022 CMake報錯解決小結(jié),visual studio,c++,linux,cmake

?文章來源地址http://www.zghlxwxcb.cn/news/detail-654773.html

1、C++?Intellisense信息可能過時,生成要刷新的CMake緩存。

2、多次定義了變量 CMAKE_INSTALL_PREFIX

3、CMake Error: CMake was unable to find a build program corresponding to "Ninja". ?CMAKE_MAKE_PROGRAM is not set. ?You probably need to select a different build tool.? 4、CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage????

5、CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage?? ? ? ??

?二、問題分析

CMake工程中最重要的文件就是CMakeLists文件,其包含工程所有需要的元素,例如下面這個demo。直接用CMakeLists會覺得難用;但用了makefile再用這個就覺得CMakeLists十分友好了。

# CMakeList.txt: CMakeProject1 的 CMake 項目,在此處包括源代碼并定義
# 項目特定的邏輯。
#
cmake_minimum_required (VERSION 3.8)

# 如果支持,請為 MSVC 編譯器啟用熱重載。
if (POLICY CMP0141)
  cmake_policy(SET CMP0141 NEW)
  set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<IF:$<AND:$<C_COMPILER_ID:MSVC>,$<CXX_COMPILER_ID:MSVC>>,$<$<CONFIG:Debug,RelWithDebInfo>:EditAndContinue>,$<$<CONFIG:Debug,RelWithDebInfo>:ProgramDatabase>>")
endif()

project ("CMakeProject1")

# 將源代碼添加到此項目的可執(zhí)行文件。
add_executable (CMakeProject1 "CMakeProject1.cpp" "CMakeProject1.h")

if (CMAKE_VERSION VERSION_GREATER 3.12)
  set_property(TARGET CMakeProject1 PROPERTY CXX_STANDARD 20)
endif()

# TODO: 如有需要,請?zhí)砑訙y試并安裝目標(biāo)。

如果上面的demo看不懂,建議先惡補一下,不然下面的內(nèi)容會比較吃力。

VS創(chuàng)建CMake工程時,默認會創(chuàng)建一個CMakePresets.json文件。

VS2022 CMake報錯解決小結(jié),visual studio,c++,linux,cmake

?例如本地計算機的x64-Debug工程屬性由下面的json片段來描述。這個片段把CMake要用的c/c++編譯器進行了定義(cl.exe)。

       {
            "name": "windows-base",
            "hidden": true,
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/out/build/${presetName}",
            "installDir": "${sourceDir}/out/install/${presetName}",
            "cacheVariables": {
                "CMAKE_C_COMPILER": "cl.exe",
                "CMAKE_CXX_COMPILER": "cl.exe"
            },
            "condition": {
                "type": "equals",
                "lhs": "${hostSystemName}",
                "rhs": "Windows"
            }
        },
        {
            "name": "x64-debug",
            "displayName": "x64 Debug",
            "inherits": "windows-base",
            "architecture": {
                "value": "x64",
                "strategy": "external"
            },
            "cacheVariables": {
                "CMAKE_BUILD_TYPE": "Debug"
            }
        }

然而,這個json文件對于linux和mac的描述則不完整,以下為linux-debug工程屬性,其中對c/c++編譯器沒有定義。

{
    "name": "linux-debug",
    "displayName": "Linux Debug",
    "generator": "Ninja",
    "binaryDir": "${sourceDir}/out/build/${presetName}",
    "installDir": "${sourceDir}/out/install/${presetName}",
    "cacheVariables": {
        "CMAKE_BUILD_TYPE": "Debug"
    },
    "condition": {
        "type": "equals",
        "lhs": "${hostSystemName}",
        "rhs": "Linux"
    },
    "vendor": {
        "microsoft.com/VisualStudioRemoteSettings/CMake/1.0": {
            "sourceDir": "$env{HOME}/.vs/$ms{projectDirName}"
        }
    }
}

這就是把本地計算機工程改為遠程Linux工程時,vs報錯的原因了。猜想vs的開發(fā)工程師在做這個功能時,只針對本地window環(huán)境編寫了完整的CMakePresets.json,而針對其他平臺只寫了一段參考,其實現(xiàn)并不完整,需要用戶手動配置缺失部分。例如,配置Linux系統(tǒng)中CMake用到的c/c++編譯器,Ninjia路徑等。可以參考一下官方的文檔

使用 CMake 預(yù)設(shè)進行配置和生成 | Microsoft Learn

三、問題解決

有了第二部分的分析,解決問題的思路就有了,把相關(guān)的配置補充完整。

首先,補充c/c++編譯器,linux機器上已經(jīng)裝了gcc/g++,直接填好就可以了。

(如果沒有安裝需要在linux安裝一下 apt install gcc g++)

        {
            "name": "linux-debug",
            "displayName": "Linux Debug",
            "generator": "Ninja",
            "binaryDir": "${sourceDir}/out/build/${presetName}",
            "installDir": "${sourceDir}/out/install/${presetName}",
          "cacheVariables": {
            "CMAKE_BUILD_TYPE": "Debug",
            "CMAKE_C_COMPILER": "gcc",
            "CMAKE_CXX_COMPILER": "g++"
          }

改了以后,這兩個報錯沒有了。

4、CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage????

5、CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage??

VS2022 CMake報錯解決小結(jié),visual studio,c++,linux,cmake

?上面的錯誤顯示查詢ninja版本號時失敗了。裝一個ninja:

sudo apt install ninja-build

安裝完成后,回到vs中,按ctrl+S,保存工程時,會自動再次構(gòu)建工程,發(fā)現(xiàn)構(gòu)建成功。

VS2022 CMake報錯解決小結(jié),visual studio,c++,linux,cmake

最后,雖然構(gòu)建成功了,實際上有個錯誤最后還是沒有解決,即使它不影響工程的構(gòu)建結(jié)果。

多次定義了變量 CMAKE_INSTALL_PREFIX

從構(gòu)建日志看出,CMAKE_INSTALL_PREFIX,確實定義了兩次。感覺這就是vs的一個bug,有博友知道如何解決,請評論告知,十分感謝。

/usr/bin/cmake -G "Ninja" ? -DCMAKE_BUILD_TYPE:STRING="Debug" -DCMAKE_C_COMPILER:STRING="gcc" -DCMAKE_CXX_COMPILER:STRING="g++" -DCMAKE_INSTALL_PREFIX:PATH="/root/.vs/CMakeProject1/out/install/linux-debug" ? -DCMAKE_INSTALL_PREFIX:PATH="/root/.vs/CMakeProject1/out/install/linux-debug" ?/root/.vs/CMakeProject1/CMakeLists.txt

?

到了這里,關(guān)于VS2022 CMake報錯解決小結(jié)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vs2017實現(xiàn)linux遠程編譯報錯“CMake 缺少以下功能:serverMode“解決方案

    背景 window系統(tǒng)vs2017使用cmake實現(xiàn)linux遠程調(diào)試和編譯時,搭建的環(huán)境報 CMake 缺少以下功能:“serverMode”。請參閱 https://aka.ms/linuxcmakeconfig 了解詳細信息 錯誤,如何解決? 經(jīng)排查,發(fā)現(xiàn)遠程開發(fā)環(huán)境的cmake版本不支持serverMode模式,因此,無法實現(xiàn)遠程編譯 解決方案 驗證遠程目

    2024年02月11日
    瀏覽(42)
  • VS2022遠程Linux使用cmake開發(fā)c++工程配置方法

    VS2022遠程Linux使用cmake開發(fā)c++工程配置方法

    最近使用別人在VS2015上使用visualgdb搭建的linux開發(fā)環(huán)境,各種不順手,一會代碼不能調(diào)轉(zhuǎn)了,一會行號沒了,調(diào)試的時候斷不到正確的位置,取消的斷點仍然會進。因此重新摸索了一套使用vs的遠程開發(fā)方法。 使用的相關(guān)工具及技術(shù)涉及: Vs2022 Ninja g++ gcc mobaxterm等。 采用ss

    2024年02月12日
    瀏覽(24)
  • 通過cmake工程生成visual studio解決方案

    通過cmake工程生成visual studio解決方案

    visual studio是一個很強大的開發(fā)工具,這個工具主要是通過解決方案對我們的源碼進行編譯等操作。但是我們很多時候拿到的可能并不是一個直接的解決方案,可能是是一個cmake工程,那么這個時候我們就需要通過cmake工程生成解決方案,然后就可以通過visual studio進行編譯和調(diào)

    2024年02月15日
    瀏覽(25)
  • Visual Studio連接Linux服務(wù)器編譯CMake項目,生成在Linux上運行的程序

    Visual Studio連接Linux服務(wù)器編譯CMake項目,生成在Linux上運行的程序

    window系統(tǒng):Windows 10 企業(yè)版 64位操作系統(tǒng) Linux系統(tǒng):BigCloud Enterprise Linux 7.8 (Core) Visual Studio:Microsoft Visual Studio Enterprise 2019 版本 16.10.4 根據(jù)Microsoft官網(wǎng)文檔介紹, 開始之前 首先,請確保已安裝 Visual Studio Linux 工作負載,包括 CMake 組件。 它屬于 Visual Studio 安裝程序中的“使用

    2024年02月13日
    瀏覽(27)
  • 【libdatachannel】1 :cmake+vs2022 構(gòu)建

    【libdatachannel】1 :cmake+vs2022 構(gòu)建

    libdatachannel 是基于c++17實現(xiàn)的 cmake 鏈接openssl 可以參考【libcurl 】win32 構(gòu)建 Release版本 修改cmakelist 鏈接openssl1.1.*

    2024年02月06日
    瀏覽(46)
  • windows下Cmake配置vs2022工程

    windows下Cmake配置vs2022工程

    我電腦安裝的是vs2022但是 cmake的gui 沒有vs2022的選項 只有2019 而且選擇2019 生成編譯環(huán)境是錯的 提示 “visual studio 16 2019 could not find any instance of visual studio.” 解決方法如下 先利用vs2022創(chuàng)建一個cmake項目 在項目路徑下執(zhí)行命令 生成如下 我們再去看cmake的配置UI上看 就已經(jīng)有了我

    2024年02月12日
    瀏覽(28)
  • visual studio 編譯cmake項目

    當(dāng)編譯出現(xiàn)問題 message(FATAL_ERROR \\\"The C compilern ?\\\"${CMAKE_C_COMPILER}\\\"n\\\" ? ? ? \\\"is not able to compile a simple test program.nIt fails \\\" ? ? ? \\\"with the following output:n ?${_output}nn\\\" ? ? ? \\\"CMake will not be able to correctly generate this project.\\\") 控制臺提示如下: 1 已為默認配置“x64-Debug”啟動 CMake 生成

    2024年02月06日
    瀏覽(30)
  • 使用 Visual Studio Code 調(diào)試 CMake 腳本

    使用 Visual Studio Code 調(diào)試 CMake 腳本

    之前被引入到 Visual Studio 中的 CMake 調(diào)試器,現(xiàn)已在 Visual Studio Code 中可用。 也就是說,現(xiàn)在你可以通過在 VS Code 中安裝 CMake 工具擴展,來調(diào)試你的 CMakeLists.txt 腳本了。是不是很棒? Visual C++ 開發(fā)團隊和 CMake 的維護者 Kitware 一直密切合作,目的是將我們的 CMake 調(diào)試器實現(xiàn)集成

    2024年02月13日
    瀏覽(26)
  • VS2022+CMAKE+OPENCV+QT+PCL安裝及環(huán)境搭建

    VS2022+CMAKE+OPENCV+QT+PCL安裝及環(huán)境搭建

    VS2022安裝: Visual Studio 2022安裝教程(千字圖文詳解),手把手帶你安裝運行VS2022以及背景圖設(shè)置_vs安裝教程_我不是大叔丶的博客-CSDN博客 CMAKE配置: win11下配置vscode+cmake_心兒癢癢的博客-CSDN博客 OPENCV配置: VS2022 + Opencv4.5.5 + C++ 配置_愿飛翔的魚兒的博客-CSDN博客 VS2022安裝Im

    2024年02月09日
    瀏覽(28)
  • Visual Studio Code系列--CMake Tools使用說明

    Visual Studio Code系列--CMake Tools使用說明

    ? ? ? ? 在linux系統(tǒng)上開發(fā)程序,一般都是使用vim+gcc+gdb進行的;但是為了開發(fā)效率我們也會使用Visual Studio Code進行開發(fā),畢竟有界面的開發(fā)調(diào)試還是更加友好一些。 ? ? ? ? 老牌程序員肯定都知道m(xù)ake構(gòu)建工具,但是其晦澀的語法還是難住不少初級開發(fā)者的。那么有沒有一種

    2024年02月12日
    瀏覽(39)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包