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

    文章

    230

    浏览量

    16685
  • CERN
    +关注

    关注

    0

    文章

    5

    浏览量

    8241
  • root
    +关注

    关注

    1

    文章

    86

    浏览量

    21411

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

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

收藏 人收藏

    评论

    相关推荐

    声明式资源管理方法

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

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

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

    cmp项目管理工具的优缺点

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

    linux网卡配置文件

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

    AI项目管理平台怎么用

    AI项目管理平台是一种集成了项目管理工具、AI开发环境和数据分析能力的综合性平台。接下来,AI部落小编为您梳理AI项目
    的头像 发表于 11-13 09:38 266次阅读

    【米尔NXP i.MX 93开发板试用评测】3、NXP的MCU工程目录结构和源码分析

    MCU工程的构建系统 NXP使用的是CMake构建系统,这也是目前非常常见的一种构建系统。 CMake是一个跨平台的自动化构建系统,它使用配置文件(称为CMakeLists.txt)来生成标准的构建
    发表于 09-21 21:11

    Jtti:MySQL初始化操作如何设置root密码

    MySQL初始化时,可以通过以下步骤设置root密码: 打开命令行工具,使用以下命令启动MySQL服务:   sudo service mysql start   使用以下命令登录MySQL服务器
    的头像 发表于 08-08 16:45 432次阅读

    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 350次阅读

    硬件测试服务项目的重要性和作用

    硬件测试服务项目是确保硬件设备性能稳定、质量可靠的关键环节。它涉及对硬件产品进行全面、细致的检查和验证,以确保其满足设计要求并具备优良的用户体验。以下是关于硬件测试服务项目的详细介绍。 一、硬件测试
    的头像 发表于 03-28 09:54 845次阅读
    硬件测试服务<b class='flag-5'>项目的</b>重要性和作用

    请问一下CMake和Make之间的区别有哪些?

    CMake和Make是构建软件,其工作涉及将源代码转换为可执行程序。CMake和Make是旨在实现构建过程自动化的工具,帮助开发者节省时间和精力。
    的头像 发表于 02-27 11:44 1853次阅读

    MES系统项目的正确实施

    电子发烧友网站提供《MES系统项目的正确实施.docx》资料免费下载
    发表于 01-31 09:24 0次下载