那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

cmake管理配置ROOT項目的方法

Geant4模擬學(xué)習(xí)交流 ? 來源:Geant4模擬學(xué)習(xí)交流 ? 作者:Geant4模擬學(xué)習(xí)交流 ? 2021-01-18 17:45 ? 次閱讀

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

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

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

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

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

4 helloworld.h 頭文件
5 helloworld.cpp 源文件
6 main.cpp 源文件的main函數(shù)

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

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

其中cmake配置文件內(nèi)容如下

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)

設(shè)定cmake最低版本要求

project(test_root01 LANGUAGES CXX VERSION 0.1.0)

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

include(CTest)

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

enable_testing()

啟用測試功能

set(CMAKE_CXX_STANDARD 11)

定義c++的標(biāo)準(zhǔn)為c++11

set(CMAKE_CXX_STANDARD_REQUIRED ON)

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

list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})

將環(huán)境變量ROOTSYS字段對應(yīng)的值賦給cmake搜索路徑,便于找到ROOT有關(guān)的東東

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++標(biāo)志

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

生成可執(zhí)行文件,后面是源文件,其中必須 有個main函數(shù)

target_link_libraries(${PROJECT_NAME} ${ROOT_LIBRARIES})

鏈接ROOT的庫文件到可執(zhí)行文件

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

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

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

設(shè)置cpack的版本

include(CPack)

包含cpack的什么鬼?

可以看出來要配置好環(huán)境變量如下圖

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

本質(zhì)就是

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

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

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

makefile用戶喜歡的方法

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

源碼鏈接如下,如果失效請點(diǎn)擊《閱讀原文》

https://gitee.com/qiangge_666/test_root01

責(zé)任編輯:xj

原文標(biāo)題:CERN ROOT開發(fā)環(huán)境的cmake配置

文章出處:【微信公眾號:Geant4模擬學(xué)習(xí)交流】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 開發(fā)環(huán)境
    +關(guān)注

    關(guān)注

    1

    文章

    230

    瀏覽量

    16697
  • CERN
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    8247
  • root
    +關(guān)注

    關(guān)注

    1

    文章

    86

    瀏覽量

    21417

原文標(biāo)題:CERN ROOT開發(fā)環(huán)境的cmake配置

文章出處:【微信號:gh_361ab7628207,微信公眾號:Geant4模擬學(xué)習(xí)交流】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Ubuntu20.04取消root賬號自動登錄的方法,觸覺智能RK3568開發(fā)板演示

    Ubuntu20.04默認(rèn)情況下為root賬號自動登錄,本文介紹如何取消root賬號自動登錄,改為通過輸入賬號密碼登錄,使用觸覺智能EVB3568鴻蒙開發(fā)板演示
    的頭像 發(fā)表于 01-17 15:42 ?325次閱讀
    Ubuntu20.04取消<b class='flag-5'>root</b>賬號自動登錄的<b class='flag-5'>方法</b>,觸覺智能RK3568開發(fā)板演示

    聲明式資源管理方法

    1、管理k8s核心資源的三種基礎(chǔ)方法 陳述式管理方法:主要依賴命令行CLI工具進(jìn)行管理 聲明式管理方法:主要依賴統(tǒng)一資源
    的頭像 發(fā)表于 12-31 10:16 ?171次閱讀

    智能攤鋪壓實質(zhì)量監(jiān)測管理系統(tǒng)為項目的順利進(jìn)行提供有力保障

    ? ? ? 隨著科技的不斷發(fā)展,智能攤鋪壓實質(zhì)量監(jiān)測管理系統(tǒng)在路面施工領(lǐng)域扮演著越來越重要的角色。這一系統(tǒng)通過實時監(jiān)測和管理,極大地提升了路面施工的質(zhì)量,為項目的順利進(jìn)行提供了有力保障。接下來,我們
    的頭像 發(fā)表于 12-18 12:32 ?123次閱讀
    智能攤鋪壓實質(zhì)量監(jiān)測<b class='flag-5'>管理</b>系統(tǒng)為<b class='flag-5'>項目的</b>順利進(jìn)行提供有力保障

    cmp項目管理工具的優(yōu)缺點(diǎn)

    CMP項目管理工具,在不同的語境下有不同的含義。一種是指綜合項目管理平臺(Comprehensive Management Platform),它旨在整合和優(yōu)化
    的頭像 發(fā)表于 12-17 09:42 ?281次閱讀

    linux網(wǎng)卡配置文件

    網(wǎng)卡配置文件 ? ? 網(wǎng)卡目錄[root@localhost opt]# ls /etc/sysconfig/network-scripts/網(wǎng)卡文件名字,和我們ifconfig看到的一樣
    的頭像 發(fā)表于 12-10 10:09 ?290次閱讀

    AI項目管理平臺怎么用

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

    【米爾NXP i.MX 93開發(fā)板試用評測】3、NXP的MCU工程目錄結(jié)構(gòu)和源碼分析

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

    Jtti:MySQL初始化操作如何設(shè)置root密碼

    MySQL初始化時,可以通過以下步驟設(shè)置root密碼: 打開命令行工具,使用以下命令啟動MySQL服務(wù): ? sudo service mysql start ? 使用以下命令登錄MySQL服務(wù)器
    的頭像 發(fā)表于 08-08 16:45 ?449次閱讀

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

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

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

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

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN?

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

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

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

    SOLIDWORKS教育版使學(xué)生了解如何加快設(shè)計項目的速度

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

    硬件測試服務(wù)項目的重要性和作用

    硬件測試服務(wù)項目是確保硬件設(shè)備性能穩(wěn)定、質(zhì)量可靠的關(guān)鍵環(huán)節(jié)。它涉及對硬件產(chǎn)品進(jìn)行全面、細(xì)致的檢查和驗證,以確保其滿足設(shè)計要求并具備優(yōu)良的用戶體驗。以下是關(guān)于硬件測試服務(wù)項目的詳細(xì)介紹。 一、硬件測試
    的頭像 發(fā)表于 03-28 09:54 ?851次閱讀
    硬件測試服務(wù)<b class='flag-5'>項目的</b>重要性和作用

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

    CMake和Make是構(gòu)建軟件,其工作涉及將源代碼轉(zhuǎn)換為可執(zhí)行程序。CMake和Make是旨在實現(xiàn)構(gòu)建過程自動化的工具,幫助開發(fā)者節(jié)省時間和精力。
    的頭像 發(fā)表于 02-27 11:44 ?1877次閱讀
    百家乐伴侣| 中国百家乐官网技巧| 百家乐波音平台有假吗| 真人百家乐官网来博| 百家乐官网平六亿财富| 大发888大法8668| 免费百家乐官网倍投工具| 咸丰县| 百家乐八卦九| 如何玩百家乐官网游戏| 娱乐城送钱| 百家乐必赢法软件| 赌百家乐官网咋赢对方| 新全讯网网址g5vvv| 真人百家乐官网最高赌注| 威尼斯人娱乐网网址| 网上百家乐官网群的微博| 万载县| 威尼斯人娱乐城代理开户| 百家乐下注平台| 百家乐官网软件编辑原理| 大发888娱乐城网站| 2016虎和蛇合作做生意| 百利宫百家乐官网现金网| 大发888赌场 游戏平台| 百家乐开发软件| 百家乐官网赌博工具| 元江| 大发888娱乐城官| 百家乐筹码多少钱| 百家乐官网l23| 棋牌真钱游戏| 百家乐平注法规则| 百家乐的必胜方法| 百家乐官网封号| 法老王娱乐城| 全讯网ceo| 电投百家乐网站| 明溪百家乐官网的玩法技巧和规则 | 闲和庄百家乐娱乐场| 免费百家乐官网统计软件|