c++ build build-process cmake

c++ - Anulando un valor de opción predeterminado(...) en CMake desde un padre CMakeLists.txt



build build-process (1)

Estoy tratando de incluir varias bibliotecas de terceros en mi árbol de fuentes con cambios mínimos en su sistema de compilación para facilitar la actualización. Todos usan CMake, como yo, así que en mi propio CMakeLists.txt puedo usar add_subdirectory(extern/foo) para libfoo.

Pero el foo CMakeLists.txt compila un arnés de prueba, construye documentación, una biblioteca compartida que no necesito, y así sucesivamente. Los autores de libfoo tuvieron la previsión de controlar estas opciones de vía - option(FOO_BUILD_SHARED "Build libfoo shared library" ON) por ejemplo - lo que significa que puedo configurarlas a través de la línea de comandos de CMake. Pero me gustaría desactivarlo por defecto y anularlo a través de la línea de comando.

He intentado hacer el set(FOO_BUILD_SHARED OFF) antes de add_subdirectory(extern/foo) . Eso tiene el efecto de no tratar de construir la biblioteca compartida durante el segundo y posteriores intentos de compilación, pero no durante el primero, que es el que realmente necesito acelerar.

¿Es esto posible o necesito mantener CMakeLists.txt bifurcado para estos proyectos?


Intenta configurar la variable en CACHE

SET(FOO_BUILD_SHARED OFF CACHE BOOL "Build libfoo shared library")

Nota: debe especificar el tipo de variable y una descripción para que CMake sepa cómo mostrar esta entrada en la GUI.