tutorial not cmake project option

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")