วิธีตั้งค่าตัวเลือก 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 GUI ได้อย่างไร แต่ใช้คำสั่ง 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'
Langley

1
คุณได้ลบ CMakeCache.txt ก่อน cmake อีกครั้งหรือไม่?
Henry Hu

คำตอบ:


101

ลบไฟล์ CMakeCache.txt แล้วลองสิ่งนี้:

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

คุณต้องป้อนคำจำกัดความบรรทัดคำสั่งทั้งหมดของคุณก่อนที่จะรวมเส้นทาง


จะระบุปิดโดยเฉพาะได้อย่างไร? ดูเหมือนว่าฉันไม่สามารถปิดตัวเลือก CUDA ได้
Ébe Isaac

7
@ EBE-isaac -DOPTION=OFFหากคุณต้องการอย่างชัดเจนปิดตัวเลือกปิดการใช้งานเพียง
TomášMlčoch

ดูเหมือนว่าคุณไม่ต้องผ่านตัวเลือกก่อนเส้นทางอีกต่อไป: cmake .. -G <whatever> -DOPTION=ONใช้ได้ดีกับฉันด้วย CMake 3.16.2
Alexander Revo

8

ตัวเลือกเพิ่มเติมคือไปที่โฟลเดอร์ build ของคุณและใช้คำสั่ง ccmake .

สิ่งนี้เหมือนกับ GUI แต่ใช้เทอร์มินัล เห็นได้ชัดว่าสิ่งนี้จะไม่ช่วยในการติดตั้งสคริปต์ แต่อย่างน้อยก็สามารถทำงานได้โดยไม่ต้องใช้ UI

คำเตือนหนึ่งที่ฉันมีคือจะไม่ให้คุณสร้างบางครั้งเมื่อคุณมีคำเตือน หากเป็นเช่นนั้นให้ออกจากอินเทอร์เฟซแล้วโทรcmake .


OP ขอโดยเฉพาะสำหรับ "ไม่มี GUI"
sancho.s ReinstateMonicaCellio

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.