Menyebabkan CMAKE menghasilkan kesalahan


141

Bagaimana cara membuat CMAKE menghasilkan kesalahan pada kondisi tertentu. Artinya, saya menginginkan yang seperti ini:

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

Jawaban:


192

The message()metode memiliki argumen opsional untuk mode, yang memungkinkan STATUS, WARNING, AUTHOR_WARNING, SEND_ERROR, dan FATAL_ERROR. STATUSpesan pergi ke stdout. Setiap mode pesan lainnya, termasuk tidak ada, masuk ke stderr.

Anda ingin SEND_ERRORjika Anda ingin menampilkan kesalahan, tetapi terus memproses. Anda ingin FATAL_ERRORjika Anda ingin keluar dari pemrosesan CMake.

Sesuatu seperti:

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
Apa sih itu AUTHOR_WARNING?
— Alexis Wilke

1
@AlexisWilke: status dokumen CMake AUTHOR_WARNING = CMake Warning (dev), continue processing, menyarankan agar digunakan untuk men-debug skrip CMake. Hanya tebakan liar.
— pauluss86

5
@AlexisWilke AUTHOR_WARNINGMenunjukkan peringatan yang tidak berguna bagi pengguna akhir tetapi bagi pengembang. Itu dapat mengingatkan mereka untuk memperbaiki beberapa hack / todos atau menunjukkan peringatan yang harus diperbaiki tetapi tidak mempengaruhi CMake yang dijalankan untuk pengguna. Itulah mengapa pengguna dapat menyembunyikan peringatan ini dengan --Wno-dev.
— usr1234567

2
CMake sekarang memiliki banyak mode lebih pesan yang menyertai message(), termasuk VERBOSE, DEBUG, dan TRACE.
— squareskittles
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.