Я получаю библиотеку Поймать из GitHub через дополнительный CMakeLists.txt, которая включена в основную один:CMake: получить библиотеку из мерзавца, прежде чем использовать в качестве основного cmakelists
cmake_minimum_required(VERSION 3.2)
project(MyProject)
add_subdirectory(ext/catch)
include_directories(${CATCH_INCLUDE_DIR} ${CXXOPTS_INCLUDE_DIR} src)
...
Где CMakeLists.txt для улова:
cmake_minimum_required(VERSION 2.8.8)
project(catch_builder CXX)
include(ExternalProject)
find_package(Git REQUIRED)
ExternalProject_Add(
catch
PREFIX ${CMAKE_CURRENT_SOURCE_DIR}
GIT_REPOSITORY https://github.com/philsquared/Catch.git
TIMEOUT 10
UPDATE_COMMAND ${GIT_EXECUTABLE} pull
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD ON
)
# Expose required variable (CATCH_INCLUDE_DIR) to parent scope
ExternalProject_Get_Property(catch source_dir)
set(CATCH_INCLUDE_DIR ${source_dir}/include CACHE INTERNAL "Path to include folder for Catch")
message(${CATCH_INCLUDE_DIR})
Однако строительство основного проекта начинается раньше, чем Catch будет извлечен из Git. Как это исправить? Что не так в моем сценарии cmake?
Просто сделайте основной объект проекта зависимым от 'catch' libary:' add_dependencies ( catch) '. Таким образом, ваш проект будет создан * после * 'catch' библиотеки. –
Tsyvarev