Как мы можем ссылаться на внешний файл 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