not - Opción de anulación en el subproyecto CMake
cmake project is not loaded clion (4)
Estoy intentando reutilizar el CMakeLists.txt
de un proyecto de terceros cuya fuente no quiero cambiar ( expat , para ser exactos). He agregado el proyecto como un subproyecto del nivel superior usando add_subdirectory
.
Esto funciona, pero ahora me gustaría establecer el valor de algunas de las option
del subproyecto en el nivel superior CMakeLists.txt
. ¿Cómo hago esto?
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 )
Puede definir las opciones con la configuración deseada (ON u OFF) antes de llamar a ADD_SUBDIRECTORY
. Esto tendrá prioridad sobre los comandos OPTION
en CMakeLists.txt
de CMakeLists.txt
ya que el último parámetro para OPTION
es solo un valor predeterminado (que se descuida si esa configuración ya existe).
Si el subproyecto usa la option
(no set
) para sus configuraciones, entonces puede especificar valores usando la option
antes de agregar el subdirectorio:
option(LIB_OPTION1 "" OFF)
option(LIB_OPTION2 "" ON)
add_subdirectory(${CMAKE_SOURCE_DIRECTORY}/lib)
Vea la pregunta similar con una buena respuesta.
Respuesta en resumen:
SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option")