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

    文章

    252

    浏览量

    17534
  • CERN
    +关注

    关注

    0

    文章

    5

    浏览量

    8350
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    22007

原文标题:CERN ROOT开发环境的cmake配置

文章出处:【微信号:gh_361ab7628207,微信公众号:Geant4模拟学习交流】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    ESP32-S3 工具链+环境配置的最终步骤清单

    、Ninja、CMake路径)已加载。 步骤3:验证工具链是否配置成功 在 export.bat 运行后的终端中,执行以下命令: # 验证 ESP32-S3 编译器
    发表于 11-26 07:36

    CubeMX 生成的 RTT 项目无法通过 cmake 编译怎么解决?

    在 CubeMX V6.13.0 版本上配置CMake 工程无法通过编译,报错如下图
    发表于 10-11 15:04

    【CPKCOR-RA8D1】1、VSCODE+CMAKE开发环境搭建

    Configurator是为不使用e2 studio的用户而专门设计的图形配置工具,可以生成MDK,IAR或是CMAKE工程。 3、安装VSCODE扩展Renesas Platform 安装了Renesas
    发表于 10-09 16:17

    如何选择适合自己项目的通信协议评估工具?

    LZ-DZ200电能质量在线监测装置 选择适合项目的通信协议评估工具,核心是 对齐项目需求与工具能力 ,避免 “过度选型”(用高端工具测简单场景)或 “功能不足”(用轻量工具测复杂协议)。以下是分步
    的头像 发表于 08-27 09:19 441次阅读
    如何选择适合自己<b class='flag-5'>项目的</b>通信协议评估工具?

    SEGGER工具链集成到CMake和VS Code了

    SEGGER公司已将其嵌入式开发工具链集成到了广泛使用的CMake构建配置工具中,这意味着基于Visual Studio Code(VS Code)代码编辑器的应用开发可以方便的使用SEGGER工具实现了。
    的头像 发表于 07-23 15:06 778次阅读

    在线监测管理系统的智能化功能详解 多角色权限与多项目管理 多终端适配

    的原则,布局合理、逻辑清晰,提供良好的用户操作体验。系统采用创新的三层监测要素架构,支持多项目、多设备、多测点的灵活扩展,可满足各类小型、中型单(多)项目的管理需求。 系统的主要功能特点包括: 多
    的头像 发表于 03-19 17:18 608次阅读

    在CubeMX V6.13.0版本上配置CMake工程无法通过编译怎么解决?

    在 CubeMX V6.13.0 版本上配置CMake 工程无法通过编译,报错如下图
    发表于 03-07 16:59

    为什么无法在OpenVINO™ 2021.3源中使用CMAKE编译ONNX模型?

    尝试从源版本 2021.3 编译OpenVINO™ 错误: ~/项目/OpenVINO/cmake-build-debug/_deps/ext_onnx-src/onnx/onnx_pb.h
    发表于 03-05 08:29

    AI项目管理平台有什么用

    当今,AI项目的复杂性和多变性给项目管理带来了前所未有的挑战。为了有效应对这些挑战,AI项目管理平台应运而生。那么,AI
    的头像 发表于 02-19 11:16 622次阅读

    信息安全管理必备!Linux系统使用SSH登录root账号的方法

    Linux远程管理信息安全必备!本文介绍各类Linux开发板/主板使用SSH登录root账号的方法,使用触觉智能RK3562开发板演示,关注触觉智能,持续为大家带来更多使用技巧!
    的头像 发表于 02-12 15:46 1116次阅读
    信息安全<b class='flag-5'>管理</b>必备!Linux系统使用SSH登录<b class='flag-5'>root</b>账号的<b class='flag-5'>方法</b>

    Ubuntu20.04取消root账号自动登录的方法,触觉智能RK3568开发板演示

    Ubuntu20.04默认情况下为root账号自动登录,本文介绍如何取消root账号自动登录,改为通过输入账号密码登录,使用触觉智能EVB3568鸿蒙开发板演示
    的头像 发表于 01-17 15:42 1203次阅读
    Ubuntu20.04取消<b class='flag-5'>root</b>账号自动登录的<b class='flag-5'>方法</b>,触觉智能RK3568开发板演示

    声明式资源管理方法

    1、管理k8s核心资源的三种基础方法 陈述式管理方法:主要依赖命令行CLI工具进行管理 声明式管理方法:主要依赖统一资源
    的头像 发表于 12-31 10:16 1062次阅读

    智能摊铺压实质量监测管理系统为项目的顺利进行提供有力保障

          随着科技的不断发展,智能摊铺压实质量监测管理系统在路面施工领域扮演着越来越重要的角色。这一系统通过实时监测和管理,极大地提升了路面施工的质量,为项目的顺利进行提供了有力保障。接下来,我们
    的头像 发表于 12-18 12:32 458次阅读
    智能摊铺压实质量监测<b class='flag-5'>管理</b>系统为<b class='flag-5'>项目的</b>顺利进行提供有力保障

    cmp项目管理工具的优缺点

    CMP项目管理工具,在不同的语境下有不同的含义。一种是指综合项目管理平台(Comprehensive Management Platform),它旨在整合和优化
    的头像 发表于 12-17 09:42 1295次阅读

    linux网卡配置文件

    网卡配置文件     网卡目录[root@localhost opt]# ls /etc/sysconfig/network-scripts/网卡文件名字,和我们ifconfig看到的一样
    的头像 发表于 12-10 10:09 1107次阅读