ทำให้ CMAKE สร้างข้อผิดพลาด


141

ฉันจะให้ CMAKE สร้างข้อผิดพลาดในเงื่อนไขเฉพาะได้อย่างไร นั่นคือฉันต้องการสิ่งนี้:

if( SOME_COND )
  error( "You can't do that" )
endif()

คำตอบ:


192

message()วิธีมีข้อโต้แย้งทางเลือกสำหรับโหมดที่ช่วยให้STATUS, WARNING, AUTHOR_WARNING, และSEND_ERROR ข้อความไปที่ stdout ทุกโหมดข้อความอื่น ๆ รวมถึงไม่มีจะไปที่ stderrFATAL_ERRORSTATUS

คุณต้องการSEND_ERRORถ้าคุณต้องการส่งออกข้อผิดพลาด แต่ดำเนินการต่อ คุณต้องการFATAL_ERRORถ้าคุณต้องการออกจากการประมวลผล CMake

สิ่งที่ต้องการ:

if( SOME_COND )
  message( SEND_ERROR "You can't do that" )
elseif( SOME_CRITICAL_COND )
  message( FATAL_ERROR "You can not do this at all, CMake will exit." )
endif()

1
ห่าคือAUTHOR_WARNINGอะไร?
Alexis Wilke

1
@AlexisWilke: สถานะเอกสาร CMake AUTHOR_WARNING = CMake Warning (dev), continue processingซึ่งแนะนำว่าจะใช้สำหรับการดีบักสคริปต์ CMake เพียงแค่เดาป่า
pauluss86

5
@AlexisWilke AUTHOR_WARNINGบ่งบอกถึงคำเตือนที่ไม่มีประโยชน์สำหรับผู้ใช้ปลายทาง แต่สำหรับนักพัฒนา สามารถเตือนพวกเขาให้แก้ไขการแฮ็ก / สิ่งที่ต้องทำหรือระบุคำเตือนที่ควรได้รับการแก้ไข แต่ไม่มีผลต่อการรัน CMake สำหรับผู้ใช้ Thats --Wno-devทำไมผู้ใช้สามารถปราบปรามคำเตือนเหล่านี้ด้วย
usr1234567

2
CMake ตอนนี้มีหลายโหมดข้อความอื่น ๆ ที่มาพร้อมกับmessage()รวมทั้งVERBOSE, และDEBUG TRACE
squareskittles
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.