cmake管理配置ROOT项目的方法

描述

ROOT作为使用C++开发的工具库,自然少不了cmake这个项目组织工具。本文简单介绍下cmake管理配置ROOT项目的方法,先上总图

开发环境

 

 

 

本项目有一个头文件,两个源文件以及一个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的什么鬼?

 

可以看出来要配置好环境变量如下图

开发环境

本质就是

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模拟学习交流】欢迎添加关注!文章转载请注明出处。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分