Использование CMake + Ninja для загрузки зависимостей с помощью GIT

У меня есть зависимость ExternalProject, которая клонируется (используя git) в процессе сборки. Все это прекрасно работает с CMake + Make.

mkdir build && cd build;
cmake ..
make

Он правильно клонирует и собирает библиотеку, используя git, когда я набираю make.

Тем не менее, когда я использую Ninja Generator:

mkdir build && cd build;
cmake -GNinja ..
ninja

Я получаю следующую ошибку:

$ cmake -GNinja ..                                                                                                                                                                                                                                                   -- The C compiler identification is AppleClang 6.0.0.6000054
-- The CXX compiler identification is AppleClang 6.0.0.6000054
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Boost version: 1.56.0
-- Found the following Boost libraries:
--   unit_test_framework
-- Found Git: /usr/local/bin/git (found version "2.1.2")
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/carneiro/src/gamgee/build

$ ninja ninja: error: 'contrib/htslib-prefix/src/htslib/libhts.a', needed by 'test/gamgee_test', missing and no known rule to make it

Не поддерживается ли git загрузка внешних проектов комбо cmake + ninja?

3

Решение

Оказывается, если вы делаете очистку перед сборкой, все работает, и ниндзя действительно загружает мои зависимости правильно.

Итак, рабочий процесс выглядит так:

mkdir build && cd build
cmake -G Ninja ..
ninja clean  # if you don't do this, it will not download Externalproject dependencies
ninja

Должна быть какая-то ошибка в генераторе ниндзя, но я доволен этим рабочим процессом на данный момент.

2

Другие решения


По вопросам рекламы [email protected]