/ / Opción de anulación en subproyecto CMake - cmake, proyecto, opción

Opción de anulación en el subproyecto CMake - cmake, proyecto, opción

Estoy tratando de reutilizar el CMakeLists.txt de un proyecto de terceros cuya fuente no quiero cambiar (expatriado, para ser exacto). He agregado el proyecto como un subproyecto del nivel superior usando add_subdirectory.

Esto funciona pero ahora me gustaría establecer el valor de algunos de los subproyectos options en el nivel superior CMakeLists.txt. ¿Cómo hago esto?

Respuestas

20 para la respuesta № 1

Ver la pregunta similar con una buena respuesta

Responda en resumen:

SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option")

17 para la respuesta № 2

Si el subproyecto usa option (no set) para sus ajustes de configuración, puede especificar valores utilizando option antes de agregar el subdirectorio:

option(LIB_OPTION1 "" OFF)
option(LIB_OPTION2 "" ON)
add_subdirectory(${CMAKE_SOURCE_DIRECTORY}/lib)

4 para la respuesta № 3

Puede definir las opciones con la configuración deseada (ON u OFF) antes de llamar ADD_SUBDIRECTORY. Esto tendrá prioridad sobre el OPTION comandos en expatriados CMakeLists.txt desde el último parámetro hasta OPTION es solo un defecto valor (que se descuida si esa configuración ya existe).


-2 para la respuesta № 4

El comando SET tiene la opción "PARENT_SCOPE":

If PARENT_SCOPE is present, the variable will be set in the scope above the current
scope. Each new directory or function creates a new scope. This command will set the
value of a variable into the parent directory or calling function (whichever is
applicable to the case at hand). PARENT_SCOPE cannot be combined with CACHE.

(ver: http://www.cmake.org/cmake/help/v2.8.10/cmake.html#command:set )