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.Anulando una opción predeterminada (...) valor en CMake desde un padre CMakeLists.txt
Pero el foo CMakeLists.txt compila un arnés de prueba, crea 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, por ejemplo, option(FOO_BUILD_SHARED "Build libfoo shared library" ON)
, 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 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?
Ponlo antes del comando add_subdirectory, por lo que establecerá el valor predeterminado para la variable. – tibur
A veces necesitas usar la 'PROPUESTA' – Rajish
Consejo profesional (para mí): 'FORCE' va detrás de la cadena de documentación, no al azar en el medio ... – Claudiu