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模擬學習交流】歡迎添加關注!文章轉載請注明出處。
-
開發環境
+關注
關注
1文章
222瀏覽量
16586 -
CERN
+關注
關注
0文章
5瀏覽量
8217 -
root
+關注
關注
1文章
85瀏覽量
21376
原文標題:CERN ROOT開發環境的cmake配置
文章出處:【微信號:gh_361ab7628207,微信公眾號:Geant4模擬學習交流】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論