При компиляции кода с отладочной, я обычно также необходимо включить определенное время компиляции и во время выполнения проверки, например:CMake дополнительные параметры отладки
gfortran -c -o hello.o -g -O0 -Wall -fcheck-all -fbacktrace hello.f90
(Да, это Fortran, но я полагаю, что . было бы работать с другими языками только же)
Если бы я хотел, чтобы собрать то же самое с Intel Fortran Compiler, то команда будет выглядеть следующим образом:
ifort -c -o hello.o -g -O0 -warn all -check all -traceback hello.f90
единственный способ собрать как это в CMake, что я нашел до сих пор что-то вроде этого:
IF(${CMAKE_Fortran_COMPILER_ID} MATCHES "GNU")
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -Wall -fcheck=all -fbacktrace")
ELSEIF(${CMAKE_Fortran_COMPILER_ID} MATCHES "Intel")
set(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -warn all -check all -traceback")
ELSE()
message(WARNING "Unable to determine Compiler ID: ${CMAKE_Fortran_COMPILER_ID}")
ENDIF(${CMAKE_Fortran_COMPILER_ID} MATCHES "GNU")
Но это вводит все жестко закодированные флаги, которые я хотел бы избежать, если начать использовать CMake. Есть ли способ добавить коммутаторы компилятора на основе того, что они делают, например «Включить все предупреждения времени компиляции» или «Включить все проверки времени выполнения»?
Скоро будет немного оптимистично. ruslo объявила в списке рассылки, что хочет реализовать эту функцию в мае 2016 года. Она еще не появилась в CMake-хозяине. – usr1234567