精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

cmake管理配置ROOT項目的方法

Geant4模擬學習交流 ? 來源:Geant4模擬學習交流 ? 作者:Geant4模擬學習交流 ? 2021-01-18 17:45 ? 次閱讀

ROOT作為使用C++開發的工具庫,自然少不了cmake這個項目組織工具。本文簡單介紹下cmake管理配置ROOT項目的方法,先上總圖

d14bef10-58a7-11eb-8b86-12bb97331649.png

本項目有一個頭文件,兩個源文件以及一個cmake配置文件組成。

序號 文件名 文件說明
1 CMakeLists.txt Cmake配置文件,用于組織項目的編譯需要的庫、編譯的過程、編譯結果
2 CMakeLists.txt.user Qtcreator打開cmake項目時生成的用戶緩存文件,可忽略
3 CMakeLists.txt.user.4825354

某個緩存文件的版本,可忽略

4 helloworld.h 頭文件
5 helloworld.cpp 源文件
6 main.cpp 源文件的main函數

其中helloworld案例是一個簡單的helloworld類。

main.cpp中的root部分來自于root自帶的案例。

其中cmake配置文件內容如下

cmake_minimum_required(VERSION 3.5)

project(test_root01 LANGUAGES CXX VERSION 0.1.0)

include(CTest)

enable_testing()

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_CXX_STANDARD_REQUIRED ON)

list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})

find_package(ROOT REQUIRED COMPONENTS MathCore RIO Hist Tree Net Graf Graf3d Gpad ROOTDataFrame Tree TreePlayer Rint )

include(${ROOT_USE_FILE})

include_directories(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIRS})

add_definitions(${ROOT_CXX_FLAGS})

add_executable(${PROJECT_NAME} main.cpp helloworld.cpp)

target_link_libraries(${PROJECT_NAME} ${ROOT_LIBRARIES})

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

include(CPack)

下面逐行講解

cmake_minimum_required(VERSION 3.5)

設定cmake最低版本要求

project(test_root01 LANGUAGES CXX VERSION 0.1.0)

定義項目名稱為test_root01,使用的語言C++,本次項目的版本號0.1.0

include(CTest)

包含cmake的一個測試庫,一般結合cppunit庫使用,我用過的測試庫是googletest。這個cppunit以后可以嘗試。

enable_testing()

啟用測試功能

set(CMAKE_CXX_STANDARD 11)

定義c++的標準為c++11

set(CMAKE_CXX_STANDARD_REQUIRED ON)

一般都寫,ON代表強制使用新特性,這個沒仔細研究過,抄上即可,有問題就注釋咯。

list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})

將環境變量ROOTSYS字段對應的值賦給cmake搜索路徑,便于找到ROOT有關的東東

find_package(ROOT REQUIRED COMPONENTS MathCore RIO Hist Tree Net Graf Graf3d Gpad ROOTDataFrame Tree TreePlayer Rint )

找到ROOT庫,并且必須加載后面那一堆東東,其中Gpad好像畫圖必須用吧?

include(${ROOT_USE_FILE})

包含ROOT的一些變量配置文件?

include_directories(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIRS})

包含一些ROOT的頭文件目錄

add_definitions(${ROOT_CXX_FLAGS})

添加ROOT的一些C++標志

add_executable(${PROJECT_NAME} main.cpp helloworld.cpp)

生成可執行文件,后面是源文件,其中必須 有個main函數

target_link_libraries(${PROJECT_NAME} ${ROOT_LIBRARIES})

鏈接ROOT的庫文件到可執行文件

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

設置cpack的一些信息,這里是名字,用于打包?

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

設置cpack的版本

include(CPack)

包含cpack的什么鬼?

可以看出來要配置好環境變量如下圖

d192e6f4-58a7-11eb-8b86-12bb97331649.png

本質就是

source 你的ROOT安裝路徑/thisroot.sh

本文是一種老式的對開發ROOT項目進行cmake配置的方法,但是支持新版本,如果要想研究新的方法,可以參考如下鏈接

https://cliutils.gitlab.io/modern-cmake/chapters/packages/ROOT.html,鏈接如果沒了,請參考下圖自行查找

makefile用戶喜歡的方法

http://ipnp.cz/scheirich/?page_id=178

源碼鏈接如下,如果失效請點擊《閱讀原文》

https://gitee.com/qiangge_666/test_root01

責任編輯:xj

原文標題:CERN ROOT開發環境的cmake配置

文章出處:【微信公眾號:Geant4模擬學習交流】歡迎添加關注!文章轉載請注明出處。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 開發環境
    +關注

    關注

    1

    文章

    222

    瀏覽量

    16586
  • CERN
    +關注

    關注

    0

    文章

    5

    瀏覽量

    8217
  • root
    +關注

    關注

    1

    文章

    85

    瀏覽量

    21376

原文標題:CERN ROOT開發環境的cmake配置

文章出處:【微信號:gh_361ab7628207,微信公眾號:Geant4模擬學習交流】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    AI項目管理平臺怎么用

    AI項目管理平臺是一種集成了項目管理工具、AI開發環境和數據分析能力的綜合性平臺。接下來,AI部落小編為您梳理AI項目
    的頭像 發表于 11-13 09:38 ?151次閱讀

    【米爾NXP i.MX 93開發板試用評測】3、NXP的MCU工程目錄結構和源碼分析

    MCU工程的構建系統 NXP使用的是CMake構建系統,這也是目前非常常見的一種構建系統。 CMake是一個跨平臺的自動化構建系統,它使用配置文件(稱為CMakeLists.txt)來生成標準的構建
    發表于 09-21 21:11

    CentOS 7: idf.py menuconfig編譯出錯的原因?

    [root@localhost hello_world]# idf.py menuconfig Executing action: menuconfig Running cmake
    發表于 06-14 08:21

    VSCode中編譯過程cmake錯誤的原因?

    M2版macbook上正確安裝了ESP-IDF v5.1.2,并安裝了VSCode插件,編譯get-started中的項目hello_world,利用idf.py build可以正確完成,但是在
    發表于 06-06 06:48

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN?

    /ncnn 2.將ncnn-master.zip拷貝到開發環境的/home/elf/work目錄下并解壓:elf@ubuntu:~/work$ unzip ncnn-master.zip 3.配置cmake
    發表于 05-29 17:24

    飛凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN

    /ncnn 2.將ncnn-master.zip拷貝到開發環境的/home/elf/work目錄下并解壓:elf@ubuntu:~/work$ unzip ncnn-master.zip 3.配置cmake
    發表于 05-29 08:53

    SOLIDWORKS教育版使學生了解如何加快設計項目的速度

    在當今信息爆炸的時代,設計項目的速度和效率對于工程專業的學生來說至關重要。SOLIDWORKS教育版作為一款專門為學生設計的3D CAD軟件,不僅提供了強大的設計工具,更致力于幫助學生了解如何加快設計項目的速度,提升他們的設計能力和效率。
    的頭像 發表于 04-09 16:00 ?303次閱讀

    硬件測試服務項目的重要性和作用

    硬件測試服務項目是確保硬件設備性能穩定、質量可靠的關鍵環節。它涉及對硬件產品進行全面、細致的檢查和驗證,以確保其滿足設計要求并具備優良的用戶體驗。以下是關于硬件測試服務項目的詳細介紹。 一、硬件測試
    的頭像 發表于 03-28 09:54 ?683次閱讀
    硬件測試服務<b class='flag-5'>項目的</b>重要性和作用

    請問一下CMake和Make之間的區別有哪些?

    CMake和Make是構建軟件,其工作涉及將源代碼轉換為可執行程序。CMake和Make是旨在實現構建過程自動化的工具,幫助開發者節省時間和精力。
    的頭像 發表于 02-27 11:44 ?1724次閱讀

    MES系統項目的正確實施

    電子發燒友網站提供《MES系統項目的正確實施.docx》資料免費下載
    發表于 01-31 09:24 ?0次下載

    【米爾-全志T113-i開發板試用】基礎開發環境配置和opencv-mobile移植測試

    系統自帶 ssh 服務,在配置好密碼后,插上網線能 ssh 上去,不過還是 adb 方便些 沿襲全志的傳統,系統自帶 adb 功能,可以直接 adb push localfile /root
    發表于 01-23 15:13

    壽寧縣五校遷建項目企業微電網能效管理系統項目的設計與應用

    基本信息:項目名稱:壽寧縣五校遷建項目(現為壽寧縣一中)企業微電網能效管理系統項目地點:福建省壽寧縣實施時間:2023年4月項目總覽圖:
    的頭像 發表于 01-12 08:07 ?517次閱讀
    壽寧縣五校遷建<b class='flag-5'>項目</b>企業微電網能效<b class='flag-5'>管理</b>系統<b class='flag-5'>項目的</b>設計與應用

    【米爾-全志T113-i開發板試用】基礎開發環境配置和opencv-mobile移植測試

    系統自帶 ssh 服務,在配置好密碼后,插上網線能 ssh 上去,不過還是 adb 方便些 沿襲全志的傳統,系統自帶 adb 功能,可以直接 adb push localfile /root
    發表于 12-27 20:04

    SNMP配置及網絡管理系統無法接收告警(Trap)的解決方法

    本文將詳細介紹如何配置SNMP,并探討網絡管理系統(NMS)無法接收告警(Trap)的原因及解決方法。SNMP(簡單網絡管理協議)是一種用于管理
    的頭像 發表于 12-27 13:58 ?1780次閱讀

    如何在Linux中重置忘記的root密碼

    忘記了 Linux root 密碼?不用擔心!本文提供了簡單易懂的說明,可以安全地重置和修改 root 密碼。
    的頭像 發表于 12-04 14:51 ?2530次閱讀
    如何在Linux中重置忘記的<b class='flag-5'>root</b>密碼