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()
edA-qa mort-ora-y
sumber

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()
André
sumber
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