Передача переменной CMAKE во вложенный файл cmake - PullRequest
0 голосов
/ 27 апреля 2019

В настоящее время я настраиваю сборку своего проекта и решил разбить CMakeLists.txt на подфайлы, которые отвечают за одну подзадачу сборки (например, тестирование, упаковка, компиляция и т. Д.). Проблема в том, что подфайлам cmake нужна информация о том, как выполнять свои задачи. Поэтому я решил потребовать установить некоторые переменные, прежде чем включать модуль. Похоже

CpackMylib.cmake:

if(NOT DEFINED MYLIB_PACKAGE_NAME)
    message(FATAL_ERROR "MYLIB_PACKAGE_NAME variable must be set")
endif()

if(NOT DEFINED MYLIB_VERSION_MAJOR)
    message(FATAL_ERROR "MYLIB_VERSION_MAJOR variable must be set")
endif()

if(NOT DEFINED MYLIB_VERSION_MINOR)
    message(FATAL_ERROR "MYLIB_VERSION_MINOR variable must be set")
endif()

if(NOT DEFINED MYLIB_VERSION_PATCH)
    message(FATAL_ERROR "MYLIB_VERSION_PATCH variable must be set")
endif()

set(CPACK_PACKAGE_VERSION_MAJOR ${MYLIB_VERSION_MAJOR})

set(CPACK_PACKAGE_VERSION_MINOR ${MYLIB_VERSION_MINOR})

set(CPACK_PACKAGE_VERSION_PATCH ${MYLIB_VERSION_PATCH})

set(CPACK_DEBIAN_PACKAGE_NAME "${MYLIB_PACKAGE_NAME}-${MYLIB_VERSION_MAJOR}")

set(CPACK_DEBIAN_PACKAGE_FILE_NAME ${MYLIB_PACKAGE_NAME}-${MYLIB_VERSION_MAJOR})

#other settings...

include(CPack)

И корень CMakeLists.txt:

set(MYLIB_VERSION_MAJOR 0)
set(MYLIB_VERSION_MINOR 0)
set(MYLIB_VERSION_PATCH 1)
set(MYLIB_PACKAGE_NAME ${PROJECT_NAME})
include(cmake/CpackMylib.cmake)

Поэтому мне требуется определить специфичные для проекта переменные, которые будут использоваться для создания пакетов с использованием CPack. Я новичок в CMake, и это кажется естественным для таких вещей. Но я не уверен, что это общий подход при работе с CMake.

Имеет ли смысл определять все переменные, необходимые для подмодулей CMake, и предоставлять их в корне CMakeLists.txt?

...