一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

cmake管理配置ROOT項(xiàng)目的方法

Geant4模擬學(xué)習(xí)交流 ? 來(lái)源:Geant4模擬學(xué)習(xí)交流 ? 作者:Geant4模擬學(xué)習(xí)交流 ? 2021-01-18 17:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

本項(xiàng)目有一個(gè)頭文件,兩個(gè)源文件以及一個(gè)cmake配置文件組成。

序號(hào) 文件名 文件說(shuō)明
1 CMakeLists.txt Cmake配置文件,用于組織項(xiàng)目的編譯需要的庫(kù)、編譯的過(guò)程、編譯結(jié)果
2 CMakeLists.txt.user Qtcreator打開(kāi)cmake項(xiàng)目時(shí)生成的用戶緩存文件,可忽略
3 CMakeLists.txt.user.4825354

某個(gè)緩存文件的版本,可忽略

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

其中helloworld案例是一個(gè)簡(jiǎn)單的helloworld類。

main.cpp中的root部分來(lái)自于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)

定義項(xiàng)目名稱為test_root01,使用的語(yǔ)言C++,本次項(xiàng)目的版本號(hào)0.1.0

include(CTest)

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

enable_testing()

啟用測(cè)試功能

set(CMAKE_CXX_STANDARD 11)

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

set(CMAKE_CXX_STANDARD_REQUIRED ON)

一般都寫(xiě),ON代表強(qiáng)制使用新特性,這個(gè)沒(méi)仔細(xì)研究過(guò),抄上即可,有問(wèn)題就注釋咯。

list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})

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

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

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

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í)行文件,后面是源文件,其中必須 有個(gè)main函數(shù)

target_link_libraries(${PROJECT_NAME} ${ROOT_LIBRARIES})

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

set(CPACK_PROJECT_NAME ${PROJECT_NAME})

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

set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})

設(shè)置cpack的版本

include(CPack)

包含cpack的什么鬼?

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

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

本質(zhì)就是

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

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

https://cliutils.gitlab.io/modern-cmake/chapters/packages/ROOT.html,鏈接如果沒(méi)了,請(qǐng)參考下圖自行查找

makefile用戶喜歡的方法

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

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

https://gitee.com/qiangge_666/test_root01

責(zé)任編輯:xj

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

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


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

    關(guān)注

    1

    文章

    242

    瀏覽量

    17123
  • CERN
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    8314
  • root
    +關(guān)注

    關(guān)注

    1

    文章

    86

    瀏覽量

    21726

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于LockAI視覺(jué)識(shí)別模塊:C++條碼識(shí)別

    (CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) ? # 定義項(xiàng)目根目錄路徑 set(PROJECT_ROOT_P
    發(fā)表于 05-27 10:26

    基于LockAI視覺(jué)識(shí)別模塊:C++圖像采集例程

    (CMAKE_CXX_STANDARD_REQUIRED ON) ? # 定義項(xiàng)目根目錄路徑 set(PROJECT_ROOT_PATH \"${CMAKE
    發(fā)表于 04-30 10:52

    在線監(jiān)測(cè)管理系統(tǒng)的智能化功能詳解 多角色權(quán)限與多項(xiàng)目管理 多終端適配

    的原則,布局合理、邏輯清晰,提供良好的用戶操作體驗(yàn)。系統(tǒng)采用創(chuàng)新的三層監(jiān)測(cè)要素架構(gòu),支持多項(xiàng)目、多設(shè)備、多測(cè)點(diǎn)的靈活擴(kuò)展,可滿足各類小型、中型單(多)項(xiàng)目的管理需求。 系統(tǒng)的主要功能特點(diǎn)包括: 多
    的頭像 發(fā)表于 03-19 17:18 ?353次閱讀

    在CubeMX V6.13.0版本上配置CMake工程無(wú)法通過(guò)編譯怎么解決?

    在 CubeMX V6.13.0 版本上配置CMake 工程無(wú)法通過(guò)編譯,報(bào)錯(cuò)如下圖
    發(fā)表于 03-07 16:59

    為什么無(wú)法在OpenVINO? 2021.3源中使用CMAKE編譯ONNX模型?

    嘗試從源版本 2021.3 編譯OpenVINO? 錯(cuò)誤: ~/項(xiàng)目/OpenVINO/cmake-build-debug/_deps/ext_onnx-src/onnx/onnx_pb.h
    發(fā)表于 03-05 08:29

    AI項(xiàng)目管理平臺(tái)有什么用

    當(dāng)今,AI項(xiàng)目的復(fù)雜性和多變性給項(xiàng)目管理帶來(lái)了前所未有的挑戰(zhàn)。為了有效應(yīng)對(duì)這些挑戰(zhàn),AI項(xiàng)目管理平臺(tái)應(yīng)運(yùn)而生。那么,AI
    的頭像 發(fā)表于 02-19 11:16 ?370次閱讀

    信息安全管理必備!Linux系統(tǒng)使用SSH登錄root賬號(hào)的方法

    Linux遠(yuǎn)程管理信息安全必備!本文介紹各類Linux開(kāi)發(fā)板/主板使用SSH登錄root賬號(hào)的方法,使用觸覺(jué)智能RK3562開(kāi)發(fā)板演示,關(guān)注觸覺(jué)智能,持續(xù)為大家?guī)?lái)更多使用技巧!
    的頭像 發(fā)表于 02-12 15:46 ?651次閱讀
    信息安全<b class='flag-5'>管理</b>必備!Linux系統(tǒng)使用SSH登錄<b class='flag-5'>root</b>賬號(hào)的<b class='flag-5'>方法</b>

    Ubuntu20.04取消root賬號(hào)自動(dòng)登錄的方法,觸覺(jué)智能RK3568開(kāi)發(fā)板演示

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

    聲明式資源管理方法

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

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

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

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

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

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

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

    AI項(xiàng)目管理平臺(tái)怎么用

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

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

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

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

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