Як встановити параметр CMake () у командному рядку


93

Я створив 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 / ...
дхарман

Як відповідає відповідь на 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.
Томаш Мльчох,

Здається, вам більше не потрібно передавати параметри до шляху: cmake .. -G <whatever> -DOPTION=ONмені добре працює CMake 3.16.2.
Олександр Рево

8

Додатковою опцією є перехід до папки збірки та використання команди ccmake .

Це як графічний інтерфейс, але на основі терміналу. Це, очевидно, не допоможе із сценарієм встановлення, але принаймні його можна запустити без інтерфейсу користувача.

Єдине попередження, яке я маю, - це не дозволить вам генерувати іноді, коли у вас є попередження. якщо це так, закрийте інтерфейс і зателефонуйтеcmake .


OP спеціально просить "не використовувати графічний інтерфейс".
sancho.s ReinstateMonicaCellio

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.