Jak ustawić opcję CMake () w wierszu poleceń


92

Utworzyłem CMakeLists.txt, który zawiera następujące elementy

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)

Domyślnie BUILD_TESTS jest WYŁĄCZONY, jak mogę go WŁĄCZYĆ bez GUI CMake, ale z samym poleceniem cmake? Wypróbowałem następujące, ale to nie działa

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

24
Wypisz swoje flagi przed ..argumentem.
arrowd


Jak wskazuje odpowiedź na 5998186, jest to `` cmake MyProjectFolder -DMyOption = ON ''
Langley

1
Czy ponownie usunąłeś CMakeCache.txt przed cmake?
Henry Hu

Odpowiedzi:


101

Usuń plik CMakeCache.txt i spróbuj tego:

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

Musisz wprowadzić wszystkie definicje wiersza polecenia przed dołączeniem ścieżki.


Jak konkretnie określić OFF? Po prostu nie mogę wyłączyć opcji CUDA.
Ébe Isaac

7
@ Ébe-isaac Jeśli chcesz jawnie wyłączyć opcję, po prostu użyj -DOPTION=OFF.
Tomáš Mlčoch

Wygląda na to, że nie musisz już podawać opcji przed ścieżką: cmake .. -G <whatever> -DOPTION=ONdla mnie działa dobrze z CMake 3.16.2.
Alexander Revo

8

Dodatkową opcją jest przejście do folderu kompilacji i użycie polecenia ccmake .

To jest jak GUI, ale oparte na terminalu. To oczywiście nie pomoże w przypadku skryptu instalacyjnego, ale przynajmniej można go uruchomić bez interfejsu użytkownika.

Jedyne ostrzeżenie, które mam, to to, że czasami nie pozwala ci generować, gdy masz ostrzeżenia. w takim przypadku wyjdź z interfejsu i zadzwońcmake .


Program operacyjny zawiera konkretną prośbę o „brak GUI”.
sancho.s ReinstateMonicaCellio

2

to działa dla mnie:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.