Как мы можем ссылаться на внешний файл cmake из основного файла CMakeLists.txt?

Допустим, у меня есть некоторый код cmake, связанный с protobuf, как библиотека, которая находится внутри файла CMakeLists.pro, и мне нужно включить эту библиотеку в качестве конфигурации внешнего файла. Как это сделать?

1 ответ

Я думаю, этот вопрос задает вопрос, как создавать модули cmake. IE у вас есть вспомогательный код, и вы хотели бы сделать его доступным.

Обычный проект верхнего уровня имеет папку cmake верхнего уровня. Вот пример того, как это будет выглядеть.

  • cmake
  • тесты
  • src
  • .gitignore
  • CMakeLists.txt
  • README.md

Внутри папки cmake скажем, что у вас есть модуль cmake под названием foo.cmake (важно, чтобы файл заканчивался расширением файла.cmake)

Во всяком случае, так может выглядеть ваш foo.cmake

# Include guards need at least cmake 3.10
include_guard() # Good practice to use an include_guard()

function(bar)
...
endfunction()

Теперь в ваших основных списках команд, как вы вызываете эту функцию? Просто.

cmake_minimum_required(VERSION 3.18)

# Add the cmake folder to the cmake module path, this makes it easier to include files
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
# Include foo.cmake
include(foo)

# Call the bar function you defined in foo.cmake
bar()

И вот как вы можете обратиться к внешнему файлу cmake из основного CMakeLists.txt

Другие вопросы по тегам