簡體   English   中英

使用 python 檢查 CMAKE 版本

[英]Check CMAKE version using python

我第一次構建一個項目,它真的很混亂。 我已經通過使用 gitmodules 包含了一個項目,並且我正在使用 Visual Studio,我想在我自己的項目中鏈接該項目。 問題是,該項目沒有附帶 Visual Studio 解決方案,所以我只剩下在此運行 cmake,但是我通過查看 GitHub 在線看到人們使用腳本來運行構建的所有先決條件。 所以我制作了批處理腳本和 python 腳本,到目前為止進展順利。

但我無法在網上找到任何地方顯示如何使用 python 獲得 cmake 版本。

我希望 python 腳本檢測是否安裝了 cmake 以及是否已安裝然后檢查其版本。

當前我的 python 代碼如下所示

if cmake --version <= 3.22.1:
    exit(1)

盡管“SyntaxError:無效語法”但這給了我錯誤

在終端中運行 cmake --version 會按預期顯示版本。 “cmake 版本 3.22.1”

我試圖從調用中獲取 cmake 版本,以便在 python 中的 if 語句中使用,而不僅僅是在 Z23EEEB4347BDD7556BZ23EEEB7347BDD7556BZ23EEEB7347BDD7556BDcmake --version 中調用 cmake --version。

有誰知道如何做到這一點? 如果這是 x,y 問題,請告訴我我不知道我在做什么!

謝謝

使用Subprocess

subprocess = subprocess.Popen("cmake --version", shell=True, stdout=subprocess.PIPE)

subprocess_return = subprocess.stdout.read()

print(subprocess_return)

您現在在subprocess_return變量中擁有命令的 output,現在您可以解析它以獲得版本號。

import subprocess import re try: msg = subprocess.Popen("cmake --version", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).stdout.read().decode() # guess versions = msg.split()[2] pat = re.compile(r'[0-9]\.[0-9].+\.[0-9]') if pat.match(versions): print(versions.split(".")) else: print("Invalid!") except: print("Invalid!")

您可以像這樣檢查 CMake 版本與 3.22.1:

import subprocess
from packaging import version

def get_cmake_version():
    output = subprocess.check_output(['cmake', '--version']).decode('utf-8')
    line = output.splitlines()[0]
    version = line.split()[2]
    return(version)

if version.parse(get_cmake_version()) < version.parse("3.22.1"):
    exit(1)

get_cmake_version運行cmake --version ,通過check_output()獲取其 output 。 然后使用split()splitlines()的組合,然后獲取第一行的第三個單詞並返回它。 然后我們用打包模塊中的version.parse解析get_cmake_version()返回的版本號,並與3.22.1進行比較。

暫無
暫無

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

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