Замена значения параметра (…) по умолчанию в CMake из родительского файла CMakeLists.txt

Я пытаюсь включить несколько сторонних библиотек в свое дерево исходных текстов с минимальными изменениями в их системе сборки для простоты обновления. Все они, как и я, используют 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) . Это приводит к тому, что я не пытаюсь создать общую библиотеку во время второй и последующих попыток сборки, но не во время первой, которую мне действительно нужно ускорить.

Возможно ли это, или мне нужно поддерживать разветвленные CMakeLists. txt для этих проектов?

56
задан 22 September 2010 в 06:13
поделиться