Пытаюсь разобраться в работе cmake. Некоторое время он работал, потом внезапно начал вываливаться с одной и той же ошибкой.
Пытаюсь скомпилировать пример из шага 1 обучалки в справке cmake. Создаю файл CMakeLists.txt следующего содержания:
cmake_minimum_required(VERSION 3.10)
set( CMAKE_CXX_COMPILER "c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/g++.exe" )
set( CMAKE_C_COMPILER "c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe" )
set( CMAKE_MAKE_PROGRAM "c:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/mingw32-make.exe" )
# set the project name
project(Tutorial)
# add the executable
add_executable(Tutorial tutorial.cxx)
Единственное отличие от того, что требуется в справке — задаю переменные CMAKE_CXX_COMPILER, CMAKE_C_COMPILER и CMAKE_MAKE_PROGRAM. Раньше всё прекрасно работало, а теперь почему-то вываливается следующая ошибка:
CMake Error at CMakeLists.txt:8 (project):
Running
'c:/PROGRA~1/MINGW-~1/X86_64~1.0-W/mingw64/bin/mingw32-make.exe' '-?'
failed with:
c:/PROGRA~1/MINGW-~1/X86_64~1.0-W/mingw64/bin/mingw32-make.exe: invalid option -- ?
Usage: mingw32-make.exe [options] [target] ...
Options:
-b, -m Ignored for compatibility.
-B, --always-make Unconditionally make all targets.
(длинный перечень всех опций mingw32-make)
В чём проблема? Почему cmake внезапно начал запускать mingw32-make.exe с параметром '-?' ?
Пытался найти описание проблемы в интернете — бесполезно. Даже непонятно, куда рыть. Что самое обидное — только что всё прекрасно работало, файл был не сильно сложнее, потом я добавил опцию #set( CMAKE_BUILD_TYPE Debug ) — и всё, даже простейший файл работать перестал...
Здравствуйте, TheMaster, Вы писали:
TM>В чём проблема? Почему cmake внезапно начал запускать mingw32-make.exe с параметром '-?' ?
TM>Пытался найти описание проблемы в интернете — бесполезно. Даже непонятно, куда рыть. Что самое обидное — только что всё прекрасно работало, файл был не сильно сложнее, потом я добавил опцию #set( CMAKE_BUILD_TYPE Debug ) — и всё, даже простейший файл работать перестал...
Конкретно в cmake не разбираюсь, но
Тут про тонкости cmake относительно Debug/Release сборок
https://stackoverflow.com/questions/24460486/cmake-build-type-is-not-being-used-in-cmakelists-txt
Настоятельно рекомендуют тип сборки указывать в командной строке.
В другом месте для set синтаксис интересный. "Debug" вообще в кавычках пишут.
https://cmake.org/pipermail/cmake/2009-June/030311.html
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel."
FORCE)
endif(NOT CMAKE_BUILD_TYPE)
https://cmake.org/pipermail/cmake-developers/2011-June/013566.html
set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Set build type")
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
${CMAKE_CONFIGURATION_TYPES} Debug Release RelWithDebInfo MinSizeRel )
Но, возможно, это опции для GUI
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали