Skip to content

Commit 2ba4b4e

Browse files
try to restructure CMakeLists
1 parent 55439aa commit 2ba4b4e

15 files changed

Lines changed: 333 additions & 207 deletions

.github/workflows/cmake.yml

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -8,48 +8,53 @@ on:
88

99
env:
1010
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
11-
BUILD_TYPE: Debug
11+
BUILD_TYPE: Release
1212

1313
permissions:
1414
id-token: write
1515
contents: read # This is required for actions/checkout@v2
1616

1717
jobs:
18-
build_centos7:
19-
container: kreisl/rootcpp17
20-
runs-on: ubuntu-latest
21-
22-
steps:
23-
- uses: actions/checkout@v2
24-
- name: Configure CMake
25-
run: source /opt/rh/devtoolset-8/enable && cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DAnalysisTreeQA_BUILD_TESTS=ON -DAnalysisTreeQA_BUNDLED_AT=ON
26-
- name: Build
27-
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
28-
- name: Test
29-
run: cd ${{github.workspace}}/build && ctest -C ${{env.BUILD_TYPE}}
30-
31-
build_fedora35:
32-
container: rootproject/root:6.24.06-fedora35
33-
runs-on: ubuntu-latest
34-
steps:
35-
- uses: actions/checkout@v2
36-
- name: Configure CMake
37-
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DAnalysisTreeQA_BUILD_TESTS=ON -DAnalysisTreeQA_BUNDLED_AT=ON
38-
- name: Build
39-
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
40-
- name: Test
41-
run: cd ${{github.workspace}}/build && ctest -C ${{env.BUILD_TYPE}}
42-
4318
build_fedora34:
4419
container: rootproject/root:6.22.08-fedora34
4520
runs-on: ubuntu-latest
4621
steps:
4722
- uses: actions/checkout@v2
23+
with:
24+
fetch-depth: 0
4825
- name: Configure CMake
4926
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DAnalysisTreeQA_BUILD_TESTS=ON -DAnalysisTreeQA_BUNDLED_AT=ON
5027
- name: Build
5128
run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
5229
- name: Test
5330
run: cd ${{github.workspace}}/build && ctest -C ${{env.BUILD_TYPE}}
54-
55-
31+
32+
# build_fedora35:
33+
# container: rootproject/root:6.24.06-fedora35
34+
# runs-on: ubuntu-latest
35+
# steps:
36+
# - uses: actions/checkout@v2
37+
# with:
38+
# fetch-depth: 0
39+
# - name: Configure CMake
40+
# run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DAnalysisTreeQA_BUILD_TESTS=ON -DAnalysisTreeQA_BUNDLED_AT=ON
41+
# - name: Build
42+
# run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
43+
# - name: Test
44+
# run: cd ${{github.workspace}}/build && ctest -C ${{env.BUILD_TYPE}}
45+
#
46+
47+
48+
# build_centos7:
49+
# container: kreisl/rootcpp17
50+
# runs-on: ubuntu-latest
51+
# steps:
52+
# - uses: actions/checkout@v2
53+
# with:
54+
# fetch-depth: 0
55+
# - name: Configure CMake
56+
# run: source /opt/rh/devtoolset-8/enable && cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DAnalysisTreeQA_BUILD_TESTS=ON -DAnalysisTreeQA_BUNDLED_AT=ON
57+
# - name: Build
58+
# run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
59+
# - name: Test
60+
# run: cd ${{github.workspace}}/build && ctest -C ${{env.BUILD_TYPE}}

AnalysisTreeQAConfig.cmake.in

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
include("${CMAKE_CURRENT_LIST_DIR}/AnalysisTreeQATargets.cmake")
2-
3-
@PACKAGE_INIT@
4-
5-
message ("-- Found AnalysisTreeQA...")
6-
7-
set(AnalysisTreeQA_INCLUDE_DIR "@PACKAGE_AnalysisTreeQA_INCLUDE_DIR@")
8-
message ("AnalysisTreeQA_INCLUDE_DIR = ${AnalysisTreeQA_INCLUDE_DIR}")
9-
10-
set(AnalysisTreeQA_LIBRARY_DIR "@PACKAGE_AnalysisTreeQA_LIBRARY_DIR@")
11-
message ("AnalysisTreeQA_LIBRARY_DIR = ${AnalysisTreeQA_LIBRARY_DIR}")
1+
cmake_minimum_required(VERSION 2.8.2)
2+
3+
project(googletest-download NONE)
4+
5+
include(ExternalProject)
6+
ExternalProject_Add(googletest
7+
URL "https://github.com/google/googletest/archive/refs/tags/release-1.11.0.zip"
8+
SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src"
9+
BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build"
10+
CONFIGURE_COMMAND ""
11+
BUILD_COMMAND ""
12+
INSTALL_COMMAND ""
13+
TEST_COMMAND ""
14+
)

CMakeLists.txt

Lines changed: 26 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,54 @@
1-
# Minimum 3.5 version is determined by cmake -E copy_if_different command
2-
# that was used to copy headers to the build directory:
3-
# multiple files are supported since cmake 3.5
4-
cmake_minimum_required(VERSION 3.5)
5-
project(AnalysisTreeQA CXX)
6-
set(PROJECT_VERSION 1.1)
7-
8-
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules)
9-
#
10-
# Options
11-
#
12-
set(AnalysisTreeQA_BUILD_TASKS OFF CACHE BOOL "Build user' AnalysisTreeQA tasks (tasks/)")
13-
set(AnalysisTreeQA_BUILD_EXAMPLES ON CACHE BOOL "Build AnalysisTreeQA examples (examples/)")
14-
set(AnalysisTreeQA_BUILD_TESTS OFF CACHE BOOL "Build tests for AnalysisTreeQA")
15-
set(AnalysisTreeQA_BUNDLED_AT ON CACHE BOOL "Get and build AnalysisTree")
16-
set(AnalysisTreeQA_BUNDLED_AT_VERSION "v2.2.6" CACHE STRING "Bundled AnalysisTree version")
17-
set(AnalysisTreeQA_BUNDLED_CUTS ON CACHE BOOL "Get and build AnalysisTreeCuts")
18-
set(AnalysisTreeQA_BUNDLED_CUTS_VERSION "v0.0.1" CACHE STRING "Bundled AnalysisTreeCuts version")
1+
cmake_minimum_required(VERSION 3.14)
2+
3+
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
4+
5+
include(MunkeiVersionFromGitATQA)
6+
version_from_git(
7+
LOG ON
8+
TIMESTAMP "%Y%m%d%H%M%S"
9+
)
10+
11+
project(AnalysisTreeQA VERSION ${VERSION} LANGUAGES CXX)
12+
13+
option(AnalysisTreeQA_BUILD_EXAMPLES "Build AnalysisTreeQA examples (examples/)" ON)
14+
option(AnalysisTreeQA_BUILD_TESTS "Build tests for AnalysisTreeQA" ON)
15+
option(AnalysisTreeQA_BUNDLED_AT "Get and build AnalysisTree" ON)
1916
option(yaml-cpp_BUNDLED "Build bundled yaml-cpp" ON)
2017

18+
set(AnalysisTreeQA_BUNDLED_AT_VERSION "v2.2.6" CACHE STRING "Bundled AnalysisTree version")
19+
2120
# by default build optimized code
2221
if(NOT DEFINED CMAKE_BUILD_TYPE)
23-
set(CMAKE_BUILD_TYPE RELEASE)
22+
set(CMAKE_BUILD_TYPE Release)
2423
endif()
2524

2625
if(NOT DEFINED CMAKE_CXX_STANDARD)
2726
set(CMAKE_CXX_STANDARD 17)
2827
endif()
2928

3029
# in DEBUG mode make verbose Makefile
31-
if (CMAKE_BUILD_TYPE MATCHES DEBUG)
30+
if (CMAKE_BUILD_TYPE MATCHES Debug)
3231
set(CMAKE_VERBOSE_MAKEFILE ON)
3332
endif ()
3433

35-
if(CMAKE_CXX_STANDARD LESS 17)
36-
find_package(Boost REQUIRED)
37-
endif()
38-
39-
if(Boost_FOUND)
40-
message(STATUS "Boost version ${Boost_VERSION_STRING} is found!")
41-
message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}")
42-
endif()
4334

4435
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall -Wextra")
36+
set(CMAKE_CXX_FLAGS_Debug "-O0 -ggdb -g -DDEBUG -D__DEBUG -Wall -Wextra")
4537
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -ffast-math -DNODEBUG")
38+
set(CMAKE_CXX_FLAGS_Release "-O3 -ftree-vectorize -ffast-math -DNODEBUG")
4639
message(STATUS "Using CXX flags for ${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
4740

48-
list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
49-
list(APPEND CMAKE_PREFIX_PATH ${ROOTSYS})
50-
51-
find_package(ROOT REQUIRED RIO)
52-
53-
include(cmake_modules/YamlCpp.cmake)
54-
include(cmake_modules/AnalysisTree.cmake)
55-
56-
message(STATUS "Using ROOT: ${ROOT_VERSION} <${ROOT_CONFIG}>")
57-
include_directories(${CMAKE_SOURCE_DIR} ${ROOT_INCLUDE_DIR} ${ROOT_INCLUDE_DIRS})
58-
include(${ROOT_USE_FILE})
59-
60-
set(EXTERNAL_DIR ${CMAKE_BINARY_DIR}/external)
61-
set(EXTERNAL_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/external)
62-
63-
include_directories(${CMAKE_SOURCE_DIR} ${AnalysisTree_INCLUDE_DIR} ${YAML_CPP_INCLUDE_DIR} ${PROJECT_INCLUDE_DIRECTORIES})
41+
include(ROOT)
42+
include(AnalysisTree)
43+
include(YamlCpp)
44+
include(Boost)
6445

6546
add_subdirectory(src)
66-
67-
if(AnalysisTreeQA_BUILD_TASKS)
68-
add_subdirectory(tasks)
69-
endif()
70-
47+
add_subdirectory(test)
7148
if(AnalysisTreeQA_BUILD_EXAMPLES)
7249
add_subdirectory(examples)
7350
endif()
7451

75-
if(AnalysisTreeQA_BUILD_TESTS)
76-
message("Compiling tests")
77-
include(GoogleTest)
78-
enable_testing()
79-
add_subdirectory(test)
80-
endif()
81-
8252
include(CMakePackageConfigHelpers)
8353
write_basic_package_version_file(
8454
"${CMAKE_CURRENT_BINARY_DIR}/AnalysisTreeQA/AnalysisTreeQAConfigVersion.cmake"
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ if (AnalysisTreeQA_BUNDLED_AT)
44

55
FetchContent_Declare(
66
AnalysisTree
7-
GIT_REPOSITORY "https://github.com/HeavyIonAnalysis/AnalysisTree.git"
8-
GIT_TAG ${AnalysisTreeQA_BUNDLED_AT_VERSION}
7+
GIT_REPOSITORY "https://github.com/viktorklochkov/AnalysisTree.git"
8+
# GIT_TAG ${AnalysisTreeQA_BUNDLED_AT_VERSION}
9+
GIT_TAG cmake
910
GIT_SHALLOW ON
1011
)
1112
FetchContent_MakeAvailable(AnalysisTree)
13+
list(APPEND PROJECT_INCLUDE_DIRECTORIES ${AnalysisTree_BINARY_DIR}/include)
14+
message(STATUS "AT: ${AnalysisTree_BINARY_DIR} ${AnalysisTree_SOURCE_DIR}")
1215
else()
16+
find_package(AnalysisTree REQUIRED)
1317
list(APPEND CMAKE_PREFIX_PATH ${ANALYSISTREE_HOME})
1418
list(APPEND CMAKE_PREFIX_PATH $ENV{ANALYSISTREE_HOME})
15-
find_package(AnalysisTree REQUIRED)
1619
list(APPEND PROJECT_INCLUDE_DIRECTORIES ${AnalysisTree_INCLUDE_DIR})
1720
endif()
21+
22+
list(APPEND PROJECT_LINK_LIBRARIES AnalysisTreeBase AnalysisTreeInfra)

cmake/Boost.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
if(CMAKE_CXX_STANDARD LESS 17)
2+
find_package(Boost REQUIRED)
3+
endif()
4+
5+
if(Boost_FOUND)
6+
message(STATUS "Boost version ${Boost_VERSION_STRING} is found!")
7+
message(STATUS "Boost include dir: ${Boost_INCLUDE_DIRS}")
8+
message(STATUS "Boost lib dir: ${Boost_LIBRARY_DIRS}")
9+
list(APPEND PROJECT_INCLUDE_DIRECTORIES ${Boost_INCLUDE_DIR}})
10+
list(APPEND PROJECT_LINK_DIRECTORIES ${Boost_LIBRARY_DIRS}})
11+
endif()

0 commit comments

Comments
 (0)