Я пытаюсь включить несколько сторонних библиотек в свое исходное дерево с минимальными изменениями в их системе сборки для удобства обновления. Все они используют CMake, как и я, поэтому в моем собственном CMakeLists.txt я могу использовать add_subdirectory(extern/foo)
для libfoo.
Но foo CMakeLists.txt компилирует тестовый жгут, строит документацию, общую библиотеку, которая мне не нужна, и так далее. У авторов libfoo была предусмотрительность для управления этими параметрами - например, option(FOO_BUILD_SHARED "Build libfoo shared library" ON)
, что означает, что я могу установить их через командную строку CMake. Но я хотел бы сделать это по умолчанию и переопределить через командную строку.
Я попытался сделать set(FOO_BUILD_SHARED OFF)
до add_subdirectory(extern/foo)
. Это приводит к тому, что вы не пытаетесь создать общую библиотеку во время второй и последующих попыток сборки, но не во время первого, что мне действительно нужно ускорить.
Возможно ли это, или мне нужно поддерживать forked CMakeLists.txt для этих проектов?