Cómo configurar una opción de CMake () en la línea de comando


92

Creé un CMakeLists.txt que contiene lo siguiente

project(P4V)
cmake_minimum_required(VERSION 2.6)

option(BUILD_STATIC_LIBS "Build the static library" ON)
option(BUILD_SHARED_LIBS "Build the shared library" ON)
option(BUILD_TESTS "Build test programs" OFF)

include_directories(${CMAKE_SOURCE_DIR}/include)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_BUILD_TYPE Release)

add_subdirectory(src)
if(BUILD_TESTS)
    add_subdirectory(tests)
endif(BUILD_TESTS)

Por defecto, BUILD_TESTS está APAGADO, ¿cómo puedo ENCENDERlo sin CMake GUI, pero con el comando cmake en sí? Intenté lo siguiente, pero no funciona

cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON

24
Enumere sus banderas antes del ..argumento.
arrowd


Como señala la respuesta al 5998186, es 'cmake MyProjectFolder -DMyOption = ON'
Langley

1
¿Ha eliminado CMakeCache.txt antes de cmake nuevamente?
Henry Hu

Respuestas:


101

Elimine el archivo CMakeCache.txt e intente esto:

cmake -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON ..

Debe ingresar todas las definiciones de la línea de comandos antes de incluir la ruta.


¿Cómo especificar específicamente OFF? Parece que no puedo desactivar la opción CUDA.
Ébe Isaac

7
@ Ébe-isaac Si desea desactivar explícitamente una opción, utilice -DOPTION=OFF.
Tomáš Mlčoch

Parece que ya no tienes que pasar las opciones antes de la ruta: cmake .. -G <whatever> -DOPTION=ONfunciona bien para mí con CMake 3.16.2.
Alexander Revo

8

Una opción adicional es ir a su carpeta de compilación y usar el comando ccmake .

Esto es como la GUI pero basada en terminales. Obviamente, esto no ayudará con un script de instalación, pero al menos se puede ejecutar sin una interfaz de usuario.

La única advertencia que tengo es que no le permitirá generar a veces cuando tenga advertencias. si ese es el caso, salga de la interfaz y llamecmake .


El OP solicita específicamente "no GUI".
sancho.s ReinstateMonicaCellio

2

esto funciona para mi:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.