Cara mengatur opsi CMake () pada baris perintah

92

Saya membuat CMakeLists.txt yang berisi berikut ini

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)

Secara default BUILD_TESTS adalah OFF, bagaimana saya bisa menyalakannya tanpa CMake GUI, tetapi dengan perintah cmake itu sendiri? Saya mencoba yang berikut ini, tetapi tidak berhasil

cmake .. -G %1 -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=ON -DBUILD_TESTS=ON
Denilson Amorim
sumber
24
Buat daftar bendera Anda sebelum ..argumen.
panah
2
Kemungkinan duplikat stackoverflow.com/questions/5998186/…
dharman
Sebagai jawaban untuk 5998186 menunjukkan itu adalah 'cmake MyProjectFolder -DMyOption = ON'
Langley
1
Sudahkah Anda menghapus CMakeCache.txt sebelum cmake lagi?
Henry Hu
1
Kemungkinan duplikat dari Menambahkan opsi baris perintah ke CMake
jww

Jawaban:

101

Hapus file CMakeCache.txt dan coba ini:

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

Anda harus memasukkan semua definisi baris perintah Anda sebelum menyertakan jalur.

fenix688
sumber
Bagaimana cara menentukan MATI secara spesifik? Sepertinya saya tidak bisa mematikan opsi CUDA.
Ébe Isaac
7
@ Ébe-isaac Jika Anda ingin secara eksplisit mematikan opsi, gunakan saja -DOPTION=OFF.
Tomáš Mlčoch
Sepertinya Anda tidak lagi harus melewatkan opsi sebelum jalur: cmake .. -G <whatever> -DOPTION=ONberfungsi dengan baik untuk saya dengan CMake 3.16.2.
Alexander Revo
8

Opsi tambahan adalah masuk ke folder build Anda dan gunakan perintah ccmake .

Ini seperti GUI tetapi berbasis terminal. Ini jelas tidak akan membantu dengan skrip instalasi tetapi setidaknya dapat dijalankan tanpa UI.

Satu-satunya peringatan yang saya miliki adalah itu tidak akan membiarkan Anda kadang-kadang menghasilkan ketika Anda memiliki peringatan. jika demikian, keluar dari antarmuka dan panggilcmake .

gilawill32
sumber
OP secara khusus meminta "tidak ada GUI".
sancho.s ReinstateMonicaCellio
2

ini bekerja untuk saya:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
Daniel Li
sumber