В этом треде я изучаю CMake (cmake 2.6.4, Ubuntu 9.10/cmake 2.8.2, Windows 7). Скажу сразу, что все очень плохо. Как эта система работает, я не понимаю «в приниципе» (т.к. бака), а подходящая для полного новичка документация по ней заключается в грепании архива списка рассылки и паре хаутушек в гугле. Однако, ладно. Есть один CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED (VERSION 2.6)
SET (CMAKE_BUILD_TYPE "Debug")
PROJECT (hello)
ADD_EXECUTABLE (hello main.cpp)
Я делаю out-of-source build:
$ mkdir build
$ cd build
$ cmake ..
$ make VERBOSE=1
Программа при этом компилируется явно с CMAKE_BUILD_TYPE=«None», который по дефолту, Флаг "-g" не передается, варнинги не выдаются. Режим «Release» соответственно, тоже не включается. Свои кастомные режимы пока делать не пробовал. Обнаружил между делом, что если прогнать cmake два раза подряд, то нужные режимы включаются. Это баг или фича? Это, наверное, как-то связано с «кэшем»? Чтобы это ни было, как от этого избавиться?
Кроме того, как можно получить «обычный» вывод make вместо этого цветного пижонства, скрывающего все самое интересное, без утомительного добавления VERBOSE=1 в командную строку? В импровизированной доке упомянута переменная CMAKE_VERBOSE_MAKEFILE, но она не работает (команда «SET (CMAKE_VERBOSE_MAKEFILE TRUE)» просто ничего не делает).
Ах да, учитывая, что unix makefile generator одноконфигурационный (makefile генерируется либо для Debug, либо для Release, либо для любого другого типа сборки, в т.ч. кастомного), какие кто знает костыли для создания многоконфигурационного makefile'а?