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 option
s en el nivel superior CMakeLists.txt
. ¿Cómo hago esto?
Respuestas
20 para la respuesta № 1Ver 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 )