Как включить существующее репозиторий CMake git в качестве субмодуля в мой собственный проект CMake?

Я пытаюсь написать какую-нибудь программу, используя OpenKinect проект. Я хочу добавить основную ветку OpenKinect в качестве подкаталога к исходному тексту моего проекта. Но, если вы посмотрите на собственный CMake OpenKinect, там слишком много вещей, и мне не нужно все. Там есть определенные опции, которые устанавливаются на ON или OFF, например:

OPTION(BUILD_AUDIO "Build audio support" OFF)
OPTION(BUILD_REDIST_PACKAGE "Build libfreenect in a legally-redistributable manner (only affects audio)" OFF)
OPTION(BUILD_EXAMPLES "Build example programs" ON)
OPTION(BUILD_FAKENECT "Build fakenect mock library" ON)
OPTION(BUILD_C_SYNC "Build c synchronous library" ON)
OPTION(BUILD_CPP "Build C++ Library (currently header only)" ON)
OPTION(BUILD_CV "Build OpenCV wrapper" ON)
OPTION(BUILD_AS3_SERVER "Build the Actionscript 3 Server Example" OFF)
OPTION(BUILD_PYTHON "Build Python extension" ON)
IF(PROJECT_OS_LINUX)
OPTION(BUILD_CPACK "Build an RPM or DEB using CPack" ON)
ENDIF(PROJECT_OS_LINUX)

Без каких-либо серьезных изменений в файлах OpenKinect (так что я могу git pull в любое время), как я могу импортировать только некоторые детали (например, C++ wrapper и OpenCV bindings) к моему собственному проекту CMake? Я думал о копировании определенных каталогов, которые не зависят от других каталогов, если я полностью перезаписываю файлы CMake. Я не смог бы больше использовать git, но это было бы быстрое решение. Но я получаю странные ошибки, такие как «stdexcept не был объявлен в этой области», что не имеет смысла, потому что это стандартная библиотека gc ++.

5

Решение

Если вы просто хотите включить / отключить некоторые части этой библиотеки, вы можете просто установить соответствующие параметры перед вызовом ADD_SUBDIRECTORY,

Просто используйте те же команды OPTION, что и в библиотеке CMakeLists.txt но установить их ON/OFF как вам нужно. Конечно, вы можете изменить / выбрать строку описания, как вам нравится.

В качестве альтернативы (и если параметры имеют значение, отличное от true / false), вы можете использовать SET(.... CACHE ... )

например

SET(BUILD_CPP TRUE CACHE BOOL "Build C++ Library (currently header only)")

Подобный вопрос:
Опция переопределения в подпроекте CMake

6

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

Других решений пока нет …

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