Cách đặt tùy chọn CMake () tại dòng lệnh


93

Tôi đã tạo CMakeLists.txt có chứa thông tin sau

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)

Theo mặc định BUILD_TESTS bị TẮT, làm cách nào để BẬT nó mà không cần CMake GUI mà chỉ sử dụng lệnh cmake? Tôi đã thử cách sau, nhưng nó không hoạt động

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

24
Liệt kê các cờ của bạn trước khi ..đối số.
arrowd

2
Có thể có bản sao của stackoverflow.com/questions/5998186/…
dharman

Như câu trả lời cho 5998186 đã chỉ ra, đó là 'cmake MyProjectFolder -DMyOption = ON'
Langley

1
Bạn đã xóa CMakeCache.txt trước khi cmake lại chưa?
Henry Hu

1
Có thể trùng lặp của Thêm tùy chọn dòng lệnh để CMake
jww

Câu trả lời:


101

Xóa tệp CMakeCache.txt và thử cách này:

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

Bạn phải nhập tất cả các định nghĩa dòng lệnh của mình trước khi đưa vào đường dẫn.


Làm thế nào để chỉ định cụ thể TẮT? Tôi dường như không thể tắt tùy chọn CUDA.
Ébe Isaac

7
@ Ébe-isaac Nếu bạn muốn TẮT một tùy chọn rõ ràng, chỉ cần sử dụng -DOPTION=OFF.
Tomáš Mlčoch

Có vẻ như bạn không còn phải vượt qua các tùy chọn trước đường dẫn: cmake .. -G <whatever> -DOPTION=ONhoạt động tốt đối với tôi với CMake 3.16.2.
Alexander Revo

8

Một tùy chọn bổ sung là chuyển đến thư mục xây dựng của bạn và sử dụng lệnh ccmake .

Điều này giống như GUI nhưng dựa trên thiết bị đầu cuối. Điều này rõ ràng sẽ không giúp ích gì với tập lệnh cài đặt nhưng ít nhất nó có thể chạy mà không có giao diện người dùng.

Một cảnh báo mà tôi có là nó sẽ không cho phép bạn tạo ra đôi khi khi bạn có cảnh báo. nếu đúng như vậy, hãy thoát khỏi giao diện và gọicmake .


OP đặc biệt yêu cầu "không có GUI".
sancho.s ReinstateMonicaCellio

2

điều này làm việc cho tôi:

cmake -D DBUILD_SHARED_LIBS=ON DBUILD_STATIC_LIBS=ON DBUILD_TESTS=ON ..
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.