162 votes

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

J'ai créé un CMakeLists.txt qui contient ce qui suit

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 OFF, 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 cela ne fonctionne pas

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

167voto

fenix688 Points 164

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.

13voto

Medici Lorenzo Points 149

Cela fonctionne pour moi :

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..

10voto

crazywill32 Points 360

Une option supplémentaire est d'aller dans votre dossier de construction et d'utiliser la commande ccmake .

C'est comme l'interface graphique mais basé sur le terminal. Cela n'aidera évidemment pas avec une installation script mais au moins il peut être exécuté sans interface utilisateur.

Le seul avertissement que j'ai est qu'il ne vous laissera pas générer parfois quand vous avez des avertissements. Si c'est le cas, quittez l'interface et appelez cmake .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X