Как установить параметр CMake () в командной строке

92

Я создал CMakeLists.txt, содержащий следующие

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)

По умолчанию BUILD_TESTS выключен, как я могу включить его без графического интерфейса CMake, но с помощью самой команды cmake? Я пробовал следующее, но не работает

cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON
Денилсон Аморим
источник
24
Перечислите ваши флаги перед ..аргументом.
arrowd
2
Возможный дубликат stackoverflow.com/questions/5998186/…
dharman
Как указывает ответ на 5998186, это cmake MyProjectFolder -DMyOption = ON
Лэнгли
1
Вы снова удалили CMakeCache.txt перед cmake?
Генри Ху

Ответы:

101

Удалите файл CMakeCache.txt и попробуйте следующее:

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

Вы должны ввести все ваши определения командной строки, прежде чем указывать путь.

fenix688
источник
Как конкретно указать OFF? Я просто не могу отключить опцию CUDA.
Ébe Isaac
7
@ Ébe-isaac Если вы хотите явно отключить параметр, просто используйте -DOPTION=OFF.
Tomáš Mlčoch
Кажется, вам больше не нужно передавать параметры до пути: cmake .. -G <whatever> -DOPTION=ONу меня отлично работает с CMake 3.16.2.
Александр Рево
8

Дополнительный вариант - перейти в папку сборки и использовать команду ccmake .

Это похоже на графический интерфейс, но основан на терминале. Это явно не поможет со сценарием установки, но, по крайней мере, его можно запустить без пользовательского интерфейса.

Единственное предупреждение, которое у меня есть, это то, что он не позволяет вам иногда генерировать предупреждения, когда у вас есть предупреждения. если это так, выйдите из интерфейса и вызовитеcmake .

сумасшедший
источник
OP специально просит «без GUI».
sancho.s ReinstateMonicaCellio
2

это работает для меня:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
Даниэль Ли
источник