cmake + mingw-w64 перестал работать :-(
От: TheMaster  
Дата: 31.03.22 09:19
Оценка:
Пытаюсь разобраться в работе 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 ) — и всё, даже простейший файл работать перестал...
Re: cmake + mingw-w64 перестал работать :-(
От: Maniacal Россия  
Дата: 31.03.22 09:56
Оценка:
Здравствуйте, 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
Re: cmake + mingw-w64 перестал работать :-(
От: Senyai Россия http://www.arseniy.net
Дата: 31.03.22 12:42
Оценка: -1
Здравствуйте, TheMaster, Вы писали:

TM>В чём проблема? Почему cmake внезапно начал запускать mingw32-make.exe с параметром '-?' ?


Какой генератор (-G) указывали? Похоже что выбран nmake (в файле Source/cmGlobalNMakeMakefileGenerator.cxx добавляется "-?"), Source/cmGlobalMinGWMakefileGenerator.cxx такого вроде не делает.
Не бойтесь совершенства. Вам его не достичь. © Сальвадор Дали
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.