CMake: скачать скомпилированные двоичные файлы - PullRequest
0 голосов
/ 27 февраля 2020

Я пытаюсь загрузить скомпилированные двоичные файлы с веб-сервера в cmake. Так есть ли что-то похожее на ExternalProject_Add, но без фактического шага сборки?

Загруженный файл является tar.gz и должен быть извлечен. Он содержит /bin /include и /lib и особенно также /lib/cmake, который должен быть найден вызывающим проектом CMake.

Если I ExternalProject_Add приводит к ошибке, что папка сборки не содержит файл CMakeLists.txt.

Пример minium - что-то вроде

cmake_minimum_required(VERSION 3.0)
project(Foo)
if (TARGET Bar)
    message(STATUS "Foo and Bar are unified - how beautiful is that")
else()
    include (ExternalProject)
    ExternalProject_Add ( Bar  # <------ This doesn't work
        URL "http://THE-INTERNET"
    )
endif()
find_package(Bar REQUIRED)
add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} Bar::Bar)

Хорошо, я понял две вещи:

  1. Команда CONFIGURE_COMMAND "" может быть предоставлена ​​для ExternalProject ничего не собирает.
  2. find_package() никогда не будет работать так. ExternalProject выполняется во время компиляции, в то время как find_package должен найти цель во время настройки.

Тем временем я нашел это: https://cmake.org/cmake/help/latest/module/FetchContent.html - это может помочь подготовить цели во время настройки, а не только во время компиляции. Однако он поддерживается только в CMake 3.11: (

...