Как установить параметр 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 ..

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


Как конкретно указать 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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.