У меня есть проект, который ранее был linux только в makefile.
Я успешно перенес его в cmake, и он отлично работает, он компилируется в чистый linux (makefile -> so) и чистые окна (визуальныйстудия -> dll) без проблем.Он также прекрасно компилируется в Linux для Windows (используя mingw -> dll).
Однако, для проблем интеграции и совместимости скриптов, я должен сгенерировать и собрать код для Windows (DLL), но в среде Cygwin(с gg от cygwin, предоставляющего dll), как это делал старый make-файл.(Я должен сделать это из-за внешних ограничений)
Я установил пакеты «make» и «cmake» на мой cygwin.
Когда я пытаюсь сгенерировать make-файл вКонсоль cygwin застревает:
$ cmake -G "Unix Makefiles" ../Sources
[ -- misc CMake prints from my CMakeLists.txt -- ]
-- Configuring done
[ -- stuck - nothing happens here -- ]
Когда я останавливаю его (ctrl-C), он ничего не говорит, и файл «Makefile» присутствует в моем каталоге сборки, поэтому я пытаюсь скомпилировать его:
$ make
[ -- misc CMake prints from my CMakeLists.txt -- ]
-- Configuring done
[ -- stuck - nothing happens here -- ]
Кажется, что он заново генерируется заново (я снова получаю отпечатки cmake, файл Makefile исчезает, затем снова появляется, и команда снова застревает на той же стадии).
На этот раз, когда я его останавливаю, выводится следующее сообщение:
$ make
[ -- misc CMake prints from my CMakeLists.txt -- ]
-- Configuring done
make: *** [Makefile:224: cmake_check_build_system] Interrupt
Я попытался найти Makefile, и кажется, что это следующая команда, которая блокирует:
cmake_check_build_system:
$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check- build-system CMakeFiles/Makefile.cmake 0
.PHONY : cmake_check_build_system
Я искал и нашел эту ветку , так что, похоже, это просто способ установить каталоги.Я пытался запустить его вручную, и результат тот же:
$ cmake -H../Sources -B. --check-build-system CMakeFiles/Makefile.cmake 0
[ -- misc CMake prints from my CMakeLists.txt -- ]
-- Configuring done
[ -- stuck - nothing happens here -- ]
Я не знаю, что я делаю неправильно, и я застрял, кто-нибудь может мне помочь?
Edit: запуск make в подробном режиме дает немного больше информации:
$ make VERBOSE=1
/usr/bin/cmake.exe -H/cygdrive/e/Projects/MyProject/Sources -B/cygdrive/e/Projects/MyProject/Build_Cygwin --check-build-system CMakeFiles/Makefile.cmake 0
Re-run cmake: build system dependency is missing
[ -- misc CMake prints from my CMakeLists.txt -- ]
-- Configuring done