История изменений
Исправление EXL, (текущая версия) :
По поводу CMake, тут 100% попадутся его апологеты.
1. Как в CMake кросс-платформенно включить предупреждения компилятора? Или я всё так и вынужден, как в 90-ых писать аля:
IF ( CMAKE_COMPILER_IS_GNUCC )
Target_compile_options(main PRIVATE "-w -Wall -Wextra -pedantic -Werror")
ENDiF()
iF ( MSVC )
target_compile_options(main PRIVATE "/W4")
ENDIF()
If ( CLANG )
TARGET_COMPILE_OPTIONS(main PRIVATE "-w -Weverything")
Endif()
Чудесный синтаксис, не правда ли? Регистронезависимость это здорово! Именно такое вырвиглазие благодаря CMake вы можете увидеть в практически любом OSS-проекте. Особо упоротые наркоманы с LOR'а предлагали даже отдельный Coding Standard применять к проекту в частности CMake-файлов. Наряду с уже существующими для C и C++.
Так о чём это я. А, вот: ведь даже в жутко примитивном QMake, внезапно, есть:
CONFIG += warn_on
CONFIG += warn_off
2. Как в CMake включить отлов изменений файла не по дате файла, like 70s, а нормально, как это делают современные сборочные системы вроде Gradle и Scons — по чек-сумме. Зачем это нужно? Да для того же Qt. В куче Qt-проектов переводы генерируются с помощью lupdate/lrelease, которые бампают дату файла (но не обязательно вносят в него изменения) и поэтому тупой CMake продолжает каждый раз заново компилировать переводы при сборке.
Исходная версия EXL, :
По поводу CMake, тут 100% попадутся его апологеты.
1. Как в CMake кросс-платформенно включить предупреждения компилятора? Или я всё так и вынужден, как в 90-ых писать аля:
IF ( CMAKE_COMPILER_IS_GNUCC )
Target_compile_options(main PRIVATE "-w -Wall -Wextra -pedantic -Werror")
ENDiF()
iF ( MSVC )
target_compile_options(main PRIVATE "/W4")
ENDIF()
If ( CLANG )
TARGET_COMPILE_OPTIONS(main PRIVATE "-w -Weverything")
Endif()
А ведь даже в жутко примитивном QMake, внезапно, есть
CONFIG += warn_on
CONFIG += warn_off
2. Как в CMake включить отлов изменений файла не по дате файла, like 70s, а нормально, как это делают современные сборочные системы вроде Gradle и Scons — по чек-сумме. Зачем это нужно? Да для того же Qt. В куче Qt-проектов переводы генерируются с помощью lupdate/lrelease, которые бампают дату файла (но не обязательно вносят в него изменения) и поэтому тупой CMake продолжает каждый раз заново компилировать переводы при сборке.