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

Linux conan+cmake管理的項目如何進行多架構編譯(x86_64及交叉編譯arm64)

這篇具有很好參考價值的文章主要介紹了Linux conan+cmake管理的項目如何進行多架構編譯(x86_64及交叉編譯arm64)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一 背景知識

Conan 和 CMake 是兩個非常流行的跨平臺開發(fā)工具,它們可以讓開發(fā)者輕松管理依賴和構建項目,支持多種操作系統(tǒng)和架構。下面是一些關于 conan 和 cmake 的介紹:

  1. Conan
    Conan 是一個用于管理 C++ 依賴項的開源工具。它可以從公共或私有存儲庫中自動下載和安裝依賴項。Conan 可以輕松地管理不同版本的依賴項,并支持多個操作系統(tǒng)和編譯器。使用 Conan,開發(fā)者可以更加輕松地構建跨平臺應用程序。

  2. CMake
    CMake 是一個跨平臺的構建系統(tǒng),它可以自動生成 Makefile、Visual Studio、Xcode 等構建系統(tǒng)所需的文件。CMake 可以讓開發(fā)者輕松地構建跨平臺應用程序,而無需編寫復雜的構建腳本。CMake 支持多種編譯器和操作系統(tǒng),并且可以與其他工具(如 conan)配合使用。

  3. Conan 和 CMake 的結合
    Conan 和 CMake 可以很好地結合使用,以便更好地管理依賴項和構建項目。使用 Conan,開發(fā)者可以輕松地下載和安裝依賴項,并在 CMake 中使用。在使用 CMake 構建項目時,可以使用 Conan 提供的工具來檢查依賴項是否已正確安裝,并自動下載和安裝未安裝的依賴項(conan_cmake_install)。這使得開發(fā)者可以更加高效和準確地構建跨平臺應用程序。

總之,使用 conan + cmake 可以讓開發(fā)者更加輕松地管理依賴和構建項目,支持多種操作系統(tǒng)和架構,從而使跨平臺開發(fā)更加容易和高效。

目前,xxx項目已經(jīng)完成了Mac(x86_64/arm64)、Windows(x86/x64)和Linux(x86_64)三個桌面端系統(tǒng)及相關架構的統(tǒng)一管理和編譯?,F(xiàn)在,我們正在補充Linux arm64交叉編譯的支持,以滿足更廣泛的需求。

二 如何實現(xiàn)Linux arm64交叉編譯

工具 交叉編譯本機環(huán)境 交叉編譯目標環(huán)境
CMake CMAKE_HOST_SYSTEM_NAME CMAKE_SYSTEM_NAME
Conan BUILD HOST

在 CMake 中,CMAKE_HOST_SYSTEM_NAME 變量表示編譯器運行的本地系統(tǒng)名稱,而 CMAKE_SYSTEM_NAME 變量表示目標系統(tǒng)的名稱。在交叉編譯時,需要將 CMAKE_SYSTEM_NAME 設置為目標系統(tǒng)的名稱,以便 CMake 可以正確地生成構建文件。

Conna 要求交叉編譯必須指定兩個 profile 信息,一個表示 BUILD 環(huán)境就是當前編譯環(huán)境信息,一個表示 HOST 目標系統(tǒng)環(huán)境信息。這樣它才會啟用交叉編譯配置。當然我們可以在 CMakeLists.txt 會判斷是否指定了 CONAN_PROFILE_BUILD 和 CONAN_PROFILE_HOST,沒有指定時我們可以啟用自動判斷。

通過 CMake 傳遞 CONAN_PROFILE_BUILD 和 CONAN_PROFILE_HOST 參數(shù),我們就可以自動化將這些配置信息傳遞給 Conan,無需手動去執(zhí)行 Conan install 流程,減少出錯可能和麻煩的步驟。

1. 交叉編譯工具鏈配置(cmake用)

# CMakeLists.txt
if (UNIX AND NOT APPLE)
    if (TARGET_ARCH STREQUAL "arm64")
        message(STATUS "build Linux arm64")
        set(CMAKE_SYSTEM_NAME Linux)
        set(CMAKE_SYSTEM_PROCESSOR arm64)
        set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
        set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
    else ()
        message(STATUS "build Linux x86_64")
    endif ()
endif ()

TARGET_ARCH變量是自己定義的,用來傳遞給cmake當前的平臺架構:包括x86_64,和arm64

2. conan依賴安裝配置(就是上文提到的兩個profile)

# CMakeLists.txt
if (NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake")
    message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
    file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/master/conan.cmake" "${CMAKE_BINARY_DIR}/conan.cmake")
endif ()
include(${CMAKE_BINARY_DIR}/conan.cmake)
if (CONAN_PROFILE_BUILD AND CONAN_PROFILE_HOST)
conan_cmake_install(PATH_OR_REFERENCE .. BUILD missing
                    SETTINGS_HOST build_type=${CMAKE_BUILD_TYPE}
                    SETTINGS_BUILD build_type=${CMAKE_BUILD_TYPE}
                    PROFILE_BUILD ${CONAN_PROFILE_BUILD}
                    PROFILE_HOST ${CONAN_PROFILE_HOST})
else ()
    conan_cmake_autodetect(settings)
    conan_cmake_install(PATH_OR_REFERENCE .. BUILD missing SETTINGS ${settings})
endif ()
  • linux-x86_64 profile
include(default)

[settings]
os=Linux
arch=x86_64
compiler=gcc
compiler.version=7
compiler.libcxx=libstdc++11
compiler.cppstd=14
  • linux-arm64 profile
include(default)

[settings]
os=Linux
arch=armv8
compiler=gcc
compiler.version=7
compiler.libcxx=libstdc++11
compiler.cppstd=14

[env]
CC=aarch64-linux-gnu-gcc
CXX=aarch64-linux-gnu-g++

3. 構建指令 (比如在x86_64平臺上交叉編譯arm64目標)

  • 構建
    cmake -Bbuild_arm64 -DCMAKE_BUILD_TYPE=Release DTARGET_ARCH=arm64 -DCONAN_PROFILE_BUILD=$(pwd)/.profiles/linux-x86_64 -DCONAN_PROFILE_HOST=$(pwd)/.profiles/linux-arm64

  • 編譯
    cmake --build build_arm64 --config Release --parallel 12文章來源地址http://www.zghlxwxcb.cn/news/detail-491087.html

到了這里,關于Linux conan+cmake管理的項目如何進行多架構編譯(x86_64及交叉編譯arm64)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • visual studio 編譯cmake項目

    當編譯出現(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)
  • CMake編譯CUDA項目報錯

    CMake編譯CUDA項目報錯

    configure后顯示如下錯誤 CMake Error at C:/Program Files/CMake/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:751 (message): Compiling the CUDA compiler identification source file “CMakeCUDACompilerId.cu” failed. 同時,注意到下面報錯為 C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildMicrosoftVCv170BuildCustomi

    2024年02月06日
    瀏覽(18)
  • Ubuntu中使用vscode+cmake引用第三方庫進行編譯調試

    在自己的項目中引用openCV和Eigen庫。 opencv和Eigen庫的編譯安裝參見上一篇文章https://blog.csdn.net/qq_41816368/article/details/130090823?spm=1001.2014.3001.5502#t4 其他的第三方庫放在工作空間的thirdparty文件夾,項目編譯時一起編譯,不提前安裝。 首先新建一個文件夾作為工作空間 在創(chuàng)建Thir

    2023年04月25日
    瀏覽(104)
  • Cmake 之Linux庫編譯

    Cmake 之Linux庫編譯

    一 camake第一列,C編譯為so庫 對應的CmakeList文件 二 Cmake介紹 2.1?CMake 是一個跨平臺的項目構建工具,CMake可以生成各種構建系統(tǒng)的配置文件,包括Makefile、Visual Studio項目文件、Xcode項目文件等,可以幫助開發(fā)人員簡化項目的構建過程,提高開發(fā)效率 2.2?CMake執(zhí)行流程圖 2.3 Cmak

    2024年01月21日
    瀏覽(16)
  • 如何應用項目管理軟件進行敏捷開發(fā)管理

    如何應用項目管理軟件進行敏捷開發(fā)管理

    敏捷開發(fā)(Agile Development)是一種軟件開發(fā)方法論,強調在不斷變化的需求和環(huán)境下,通過迭代、協(xié)作和自適應的方式來開發(fā)軟件。敏捷方法的目標是提供更快、更靈活、更高質量的軟件交付,以滿足客戶需求并實現(xiàn)項目成功。 在技術研發(fā)團隊使用敏捷開發(fā)來完成一個迭代時

    2024年02月12日
    瀏覽(36)
  • 使用CMake交叉編譯Arm Linux程序

    注意,工具鏈文件的指定一定要緊跟cmake命令之后,不能放到 … 后面構建arm架構cmake 工程里新建一個文件叫arm_linux_setup.cmake arm_linux_setup.cmake內(nèi)容如下

    2024年02月03日
    瀏覽(55)
  • centos編譯升級cmake,痛苦的Linux小白

    centos編譯升級cmake,痛苦的Linux小白

    環(huán)境 root 用戶 下載 cmake官網(wǎng)下載地址:https://cmake.org/download/ 獲取下載地址, 右擊 cmake-3.27.4.tar.gz 命令行輸入鏈接地址,下載 解壓 配置編譯環(huán)境 配置失敗,could not find openssl… 原因: 缺少 openssl 的編譯依賴 解決: 安裝openssl 編譯 查看cmake版本 發(fā)現(xiàn)還是原來的版本…,用s

    2024年02月09日
    瀏覽(19)
  • windows下使用microsoft、intel、gnu不同編譯器利用cmake和vscode對c++和fortran程序進行編譯和調試

    windows下使用microsoft、intel、gnu不同編譯器利用cmake和vscode對c++和fortran程序進行編譯和調試

    由于編譯器支持特性、編譯后程序運行速度、安裝使用便捷程度等的不同,我們往往會安裝多種不同的編譯器。對于c++語言主要的編譯器有:microsoft、intel、gnu等,對于fortran語言則更多,包括gnu、intel、pgi等等。不同的編譯器在一個系統(tǒng)下,往往需要利用一些手段進行區(qū)分,

    2024年02月05日
    瀏覽(24)
  • CMake項目使用ctest+gtest進行單元測試

    CMake項目使用ctest+gtest進行單元測試

    隨著CMake工具越來越強大便捷,越來越多的C/C++項目轉而使用CMake來進行編譯管理,它還提供了用于測試的ctest命令來執(zhí)行項目中編寫的單元測試。 本文就以一個實例來介紹如何使用ctest來進行單元測試。 本文實例環(huán)境VSCode+MinGW64+CMake+gtest。 需要在MinGW中安裝gtest,如果沒有安裝

    2024年02月05日
    瀏覽(16)
  • 如何將自己的項目上傳到github上,并進行項目管理

    將項目上傳到GitHub并進行項目管理是一個多步驟的過程。以下是一個簡單的示例,指導您如何完成這一過程: 1. 創(chuàng)建GitHub賬戶 如果您還沒有GitHub賬戶,請先在 GitHub 上注冊一個。 2. 創(chuàng)建新倉庫 登錄您的GitHub賬戶。 在GitHub主頁的右上角,點擊 \\\"+\\\" 圖標,然后選擇 \\\"New repositor

    2024年02月03日
    瀏覽(19)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包