LINUX.ORG.RU

История изменений

Исправление 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 продолжает каждый раз заново компилировать переводы при сборке.