web-dev-qa-db-fra.com

Comment définir une option CMake () en ligne de commande

J'ai créé un CMakeLists.txt contenant les éléments suivants

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)

Par défaut, BUILD_TESTS est désactivé, comment puis-je l'activer sans l'interface graphique de CMake, mais avec la commande cmake elle-même? J'ai essayé ce qui suit, mais ça ne marche pas

cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON
68
Denilson Amorim

Supprimez le fichier CMakeCache.txt et essayez ceci:

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

Vous devez entrer toutes vos définitions de ligne de commande avant d'inclure le chemin.

76
fenix688

Une option supplémentaire consiste à accéder à votre dossier de construction et à utiliser la commande ccmake .

C'est comme l'interface graphique mais basée sur le terminal. Cela ne va évidemment pas aider avec un script d'installation, mais au moins, il peut être exécuté sans interface utilisateur.

L'avertissement que j'ai est qu'il ne vous laissera pas générer parfois lorsque vous avez des avertissements. si tel est le cas, quittez l'interface et appelez cmake .

8
crazywill32

cela fonctionne pour moi:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
0
Daniel Li