2015-09-01 8 views
0

Я создаю проект с использованием Cmake, и я использую ExternalProject для включения зависимости. Эта зависимость имеет свой собственный CMakeLists.txt, и внутри этого CMakeLists.txt он включает еще два каталога с использованием add_subdirectory, и эти каталоги являются примерами, и я хочу их удалить.Исключить подкаталог внешнего проекта

Например:

ExternalProject_Add(
    foobar 
    URL url_goes_here 
    PREFIX ${CMAKE_CURRENT_BINARY_DIR}/vendor/foobar 
    INSTALL_COMMAND "" 
) 

Внутри из CMakeLists.txt из foobar имеет add_subdirectory(example1) и add_subdirectory(example1).

Я хочу удалить эти два примера из строя.

ответ

0

Я бы сначала проверил, имеет ли foobar уже флаг, чтобы отключить примеры. Вы можете использовать CMAKE_ARGS для установки флага.

В противном случае вы можете использовать PATCH_COMMAND, чтобы удалить примеры из foobar.

Update 1, Как патч: Вы можете использовать один из нескольких возможностей

  • создать патч-файл и применить его с patch -p1 < disable_examples.patch
  • запустить SED-скрипт удалить add_subdirectory линии sed -i '/add_subdirectory\(examples\)/d' CMakeListss.txt. В этом случае удалите все строки, исправляющие регулярное выражение add_subdirectory\(examples\).
  • запустить сценарий CMake с cmake -P script.cmake, который читает файл по строкам и удаляет строки примера.

К сожалению, только последний вариант выполняет кросс-платформу, то есть на Windows.

+0

У зависимостей нет возможности отключить примеры. Любой пример использования этого PATCH_COMMAND? Я не могу найти ничего подобного. – Secafo

Смежные вопросы