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.