Page tree
Skip to end of metadata
Go to start of metadata

Утилита для сборки проектов на C/C++.
Запуск в командной режиме: cmake path/to/CMakeLists/txt <options>

Текстовый интерфейс: ccmake path/to/CMakeLists/txt — заметно удобнее для настройки сборки большого проекта типа ROOT/GEANT4 чем вбивать команды.

Пример

CMAKE_MINIMUM_REQUIRED(VERSION 2.6 FATAL_ERROR) # Задаем минимальныю версию cmake

PROJECT(geant4-thunderstorm) # Задаем имя проекта

FIND_PACKAGE(Geant4 REQUIRED ui_all vis_all) # Пытаемся автоматически найти GEANT4, 
# Будет успешно если путь к cmake модулям GEANT4 будет в переменных окружения системы

# Эпик фейл если GEANT4 не найден
IF(NOT Geant4_FOUND)
    MESSAGE(FATAL_ERROR "Geant4 not found!")
ENDIF(NOT Geant4_FOUND)

Подключаем папки в котрых лежат нужные нам заголовочные файлы (header file: .hh, .hcc etc)
INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/include)
INCLUDE(${Geant4_USE_FILE})

INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/../g4npm/include)

# Ручной поиск библиотек
find_library(geant4 NAMES geant4
        PATHS ${PROJECT_SOURCE_DIR}/../g4npm/lib)
find_library(utils NAMES utils
        PATHS ${PROJECT_SOURCE_DIR}/../g4npm/lib)

#Cоздаем переменную содержащую пути к исходним файлам
FILE(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)

# Создаем исполняемый файл
ADD_EXECUTABLE(geant4-thunderstorm.exe main.cc ${sources} ${headers})

# Линкуем исполняемый файл и внешние билиотеки
TARGET_LINK_LIBRARIES(geant4-thunderstorm.exe ${Geant4_LIBRARIES} ${geant4} ${utils})



Рецепты

Вывести все переменные используемые в файле

get_cmake_property(_variableNames VARIABLES)
list (SORT _variableNames)
foreach (_variableName ${_variableNames})
   message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
  • No labels